<?php

class Curso
{
	//DADOS GERAIS DO CURSO
	private $idCurso;
	private $idDono;
	private $nome;
	private $urlCurso;
	private $logo;
	private $idAreaConhecimento;
	private $nivel;
	private $idLayout;
	private $layoutString;
	
	//CONFIGURACOES DO CURSO
	private $dataInicioMatricula;
	private $dataTerminoMatricula;
	private $dataInicioCurso;
	private $dataTerminoCurso;
	private $dataCriacao;
	private $liberado;
	private $apagado;
	private $vagas;
	private $nomeModulo;
	private $idNomenclaturaPadrao;
	private $codigoInscricao;
	private $conteudoLivre;
	
	//INFORMACOES DO CURSO
	private $publicoAlvo;
	private $objetivos;
	private $ementa;
	private $orientacoes;
	private $cronograma;
	
	//FERRAMENTAS DO CURSO
	private $exibirGlossario;
	private $exibirLinks;
	private $exibirBibliografia;
	private $exibirAvisos;
	private $exibirForum;
	private $exibirEmail;
	private $exibirChat;
	private $exibirBlog;
	
	//DADOS EXTERNOS DO CURSO
//	private $professores;
//	private $turmas;
	private $tutores;
	private $modulos;
	private $modulosVisiveis;
	private $atividades;
	
	/**
	 * @constructor
	 * @classDescription Funcao modelo que representa um curso.
	 * @param int $idCurso
	 */
	
	public function Curso($idCurso, $urlCurso = NULL) {
		$strQuery	=	"SELECT * FROM cursos WHERE ";
		$strQuery	.=	$idCurso == NULL? "urlCurso = '" . $urlCurso . "'" : "idCurso = " . $idCurso;
		// debug($strQuery);
		// die;
		if ($resultado	=	BancoDados::query($strQuery)){
			// echo "oi";
			// debug($resultado);
			// die;

			$this->setIdCurso($resultado[0]['idCurso']);
			$this->setIdDono($resultado[0]['idDono']);
			$this->setNome($resultado[0]['nome']);
			$this->setUrlCurso($resultado[0]['urlCurso']);
			$this->setLogo($resultado[0]['logo']);
			$this->setIdAreaConhecimento($resultado[0]['idArea']);
			$this->setNivel($resultado[0]['nivel']);
			$this->setIdLayout($resultado[0]['idLayout']);

			$this->setDataInicioMatricula($resultado[0]['inicioMatricula']);
			$this->setDataTerminoMatricula($resultado[0]['terminoMatricula']);
			$this->setDataInicioCurso($resultado[0]['inicioCurso']);
			$this->setDataTerminoCurso($resultado[0]['terminoCurso']);
			$this->setDataCriacao($resultado[0]['dataCriacao']);
			$this->setLiberado($resultado[0]['liberado']);
			$this->setApagado($resultado[0]['apagado']);
			$this->setVagas($resultado[0]['vagas']);
			$this->setNomeModulo($resultado[0]['nomeModulo']);
			$this->setIdNomenclaturaPadrao($resultado[0]['idNomenclaturaPadrao']);
			$this->setCodigoInscricao($resultado[0]['codigoInscricao']);
			$this->setConteudoLivre($resultado[0]['conteudoLivre']);
			
			$this->setPublicoAlvo($resultado[0]['publicoAlvo']);
			$this->setObjetivos($resultado[0]['objetivos']);
			$this->setEmenta($resultado[0]['ementa']);
			$this->setOrientacoes($resultado[0]['orientacao']);
			$this->setCronograma($resultado[0]['cronograma']);
			
			$this->setExibirGlossario($resultado[0]['exibirGlossario']);
			$this->setExibirLinks($resultado[0]['exibirLinks']);
			$this->setExibirBibliografia($resultado[0]['exibirBibliografia']);
			$this->setExibirAvisos($resultado[0]['exibirAvisos']);
			$this->setExibirForum($resultado[0]['exibirForum']);
			$this->setExibirEmail($resultado[0]['exibirEmail']);
			$this->setExibirChat($resultado[0]['exibirChat']);
			$this->setExibirBlog($resultado[0]['exibirBlog']);
			
			$this->setTutores();
			$this->setAtividades();
//			$this->turmas		=	array();
//			$this->professores	=	array();
//			
//			$strQuery	=	"SELECT * FROM turmas WHERE idCurso = " . $this->getIdCurso() . ";";
//			
//			if (is_array($turmas	=	BancoDados::query($strQuery))){
//				$arrayProfessores 		=	array();
//				
//				foreach($turmas as $turma){
//					$strQuery	=	"SELECT turmasProfessores.idUsuario as idProfessor, turmasProfessores.exibirEmailProfessor as exibirEmail, turmasProfessores.exibirEnderecoProfessor as exibirEndereco, turmasProfessores.exibirTelefoneProfessor as exibirTelefone, usuarios.nome as nome FROM turmasProfessores, usuarios WHERE turmasProfessores.idTurma=" . $turma['idTurma'] . " AND turmasProfessores.idUsuario = usuarios.idUsuario;";
//
//					if (is_array($professores	=	BancoDados::query($strQuery))){
//						foreach ($professores as $professor) {
//							$arrayProfessores[$professor['idProfessor']] =	 array('nome' => nomeSobrenome($professor['nome']), 'exibirEmail' => $professor['exibirEmail'], 'exibirEndereco' => $professor['exibirEndereco'], 'exibirTelefone' => $professor['exibirTelefone'], 'linkPerfil' => montaLink(array("usuario",$professor['idProfessor'])) );
//						}
//						$this->adicionaTurma($turma['idTurma'], $turma['nome'], $arrayProfessores);
//					}
//					else {
//						$this->setIdCurso(null);
//					}
//					
//				}
//				$this->setProfessores($arrayProfessores);
//			}
//			else{
//				$this->setIdCurso(null);
//			}
		}
		else {
			$this->setIdCurso(null);
		}
	}
	
	public function configuraMenu($parametros, $visualizacao) {
		if (is_array($parametros)) {
			if (sizeof($parametros >= 2) && $parametros['PARAMETRO_0'] == 'curso' && $parametros['PARAMETRO_1'] == $this->getUrlCurso()) {
				$visualizacao	=	$visualizacao	==	'Administrador' ? 'Professor' : $visualizacao;
				
				$arrayMenu	=	array();
				
				//Configuracao do link de apresentacao, comum em todas as visualizacoes
				$linkApresentacaoSelecionado	=	false;
				if (sizeof($parametros) == 2) {
					$linkApresentacaoSelecionado	=	true;
				}
				$arrayApresentacao	=	array(	'texto' => texto('AREA_APRESENTACAO_DO_CURSO'),
												'href' => montaLink(array('curso', $this->getUrlCurso())),
												'class' => $linkApresentacaoSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
				array_push($arrayMenu, $arrayApresentacao);
				
				if ($visualizacao == 'Visitante') {
					//Visualizando como aluno nao inscrito no curso
					if (comparaDatasString($this->getDataInicioMatricula(), date("Y-m-d", time())) < 0) {
						//Matricula ainda vai abrir
						$arrayMatriculaAbreEm	=	array(	'texto' => texto('EXPLICACAO_MATRICULA_ABRE_EM_MENU', array(getDataFormatada($this->getDataInicioMatricula()))),
															'class' => 'itemMenuPrincipalTexto');
						array_push($arrayMenu, $arrayMatriculaAbreEm);
					} 
					else {
						//Matricula ja abriu
						if (comparaDatasString($this->getDataTerminoMatricula(), date("Y-m-d", time())) <= 0) {
							//Matricula ainda esta aberta
							if(($this->getVagas() == NULL) || (($this->getVagas() - $this->getNumeroInscritos()) > 0)) {
								//Curso ainda possui vagas
								
								$linkInscrevaSeSelecionado	=	false;
								if (sizeof($parametros) > 2 && $parametros['PARAMETRO_0'] == 'inscricao') {
									$linkInscrevaSeSelecionado	=	true;
								}
								
								$arrayInscrevaSe	=	array(	'texto' => texto('AREA_INSCRICAO'),
																'href' => montaLink(array('curso', $this->getUrlCurso(), 'inscricao')),
																'class' => $linkInscrevaSeSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
								array_push($arrayMenu, $arrayInscrevaSe);
							}
							else {
								//Vagas esgotadas
								$arrayVagasEsgotadas	=	array(	'texto' => texto('AREA_INSCRICAO'),
																	'title' => texto('EXPLICACAO_LOTACAO_ESGOTADA_MENU'),
																	'class' => 'itemMenuPrincipal');
								array_push($arrayMenu, $arrayVagasEsgotadas);
							}
						}
						else {
							//Matricula ja fechou
							$arrayMatriculaEncerrada	=	array(	'texto' => texto('AREA_INSCRICAO'),
																	'title' => texto('EXPLICACAO_MATRICULA_ENCERRADA_MENU'),
																	'class' => 'itemMenuPrincipal');
							array_push($arrayMenu, $arrayMatriculaEncerrada);
						}
					}
				}
				else {
					//Usuario esta visualizando como alguem que tem acesso ao conteudo do curso
					if ($visualizacao == 'Aluno' && comparaDatasString($this->getDataInicioCurso(), date("Y-m-d", time())) == -1) {
						//Curso ainda nao comecou
						$arrayMatriculaEncerrada	=	array(	'texto' => texto('EXPLICACAO_CURSO_NAO_COMECOU'),
																'title' => texto('EXPLICACAO_CURSO_NAO_COMECOU'),
																'class' => 'itemMenuPrincipal');
						array_push($arrayMenu, $arrayMatriculaEncerrada);
					}
					else {
						//Verifica se esta editando o curso
						$editandoCurso	=	false;
						if ((sizeof($parametros) > 2 && $parametros['PARAMETRO_2'] == 'editar')) {
							$editandoCurso	=	true;
						}
						
						//Configurando Modulos
						if ($visualizacao == 'Professor' || ($visualizacao == 'Aluno' && (sizeof($this->getModulosVisiveis()) > 0))) {
							$linkModulosSelecionado	=	false;
							if (sizeof($parametros) > 2 && ($parametros['PARAMETRO_2'] == 'modulo' || $parametros['PARAMETRO_2'] == 'gerenciarmodulos')) {
								$linkModulosSelecionado	=	true;
							}
							$arrayModulos	=	array(	'texto' => $this->getNomeModulo(),
														'class' => $linkModulosSelecionado ? 'itemMenuPrincipalTextoSelecionado' : 'itemMenuPrincipalTexto',
														'aberto' => true,
														'submenu' => array());
							
							//Inserir cada modulo individualmente
							if (is_array($resultadoModulos = $this->getModulos())) {
								foreach ($resultadoModulos['listaResultados'] as $chave => $modulo) {
									if ($visualizacao == 'Professor' || ($visualizacao == 'Aluno' && $modulo['visivel'])) {
										$linkModuloAtualSelecionado	=	false;
										if ((sizeof($parametros) > 2 && $parametros['PARAMETRO_2'] != 'gerenciarmodulos') && sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == $modulo['idModulo']) {
											$linkModuloAtualSelecionado	=	true;
										}
										$arrayModuloAtual	=	array(	'texto' => $modulo['titulo'],
																		'href' => montaLink(array('curso', $this->getUrlCurso(), 'modulo', $modulo['idModulo'])),
																		'class' => $linkModuloAtualSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
										array_push($arrayModulos['submenu'], $arrayModuloAtual);
									}
								}
							}
							
							//Professor pode adicionar modulos
							if ($visualizacao == 'Professor') {
								$linkGerenciarModulosSelecionado	=	false;
								if (sizeof($parametros) > 2 && $parametros['PARAMETRO_2'] == 'gerenciarmodulos') {
									$linkGerenciarModulosSelecionado	=	true;
								}
								$arrayGerenciarModulos	=	array(	'id' => 'liAdicionarModulos',
																	'texto' => texto('AREA_GERENCIAR_MODULOS', array($this->getNomeModulo())),
																	'href' => montaLink(array('curso', $this->getUrlCurso(), 'gerenciarmodulos')),
																	'class' => $linkGerenciarModulosSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
								array_push($arrayModulos['submenu'], $arrayGerenciarModulos);
							}
							
							array_push($arrayMenu, $arrayModulos);
						}
						
						//Configurando Comunicacao
						if ($editandoCurso || ($this->getExibirAvisos() || $this->getExibirBlog() || $this->getExibirChat() || $this->getExibirEmail() || $this->getExibirForum())) {
							$linkComunicacaoSelecionado	=	false;
							if (sizeof($parametros) > 2 && $parametros['PARAMETRO_2'] == 'comunicacao') {
								$linkComunicacaoSelecionado	=	true;
							}
							$arrayComunicacao	=	array(	'texto' => texto("AREA_COMUNICACAO"),
															'class' => $linkComunicacaoSelecionado ? 'itemMenuPrincipalTextoSelecionado' : 'itemMenuPrincipalTexto',
															'aberto' => true,
															'submenu' => array());
							
							//Configurando Avisos
							if ($this->getExibirAvisos() || $editandoCurso) {
								$linkAvisosSelecionado	=	false;
								if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'avisos') {
									$linkAvisosSelecionado	=	true;
								}
								$arrayAvisos	=	array(	'texto' => texto('AREA_AVISOS'),
															'href' => montaLink(array('curso', $this->getUrlCurso(), 'comunicacao', 'avisos')),
															'class' => $linkAvisosSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
								
								if ($editandoCurso) {
									$arrayAvisos['href']	=	'';
									$arrayAvisos['edicao']	=	true;
									$arrayAvisos['name']	=	'strAvisos';
									$arrayAvisos['checked']	=	$this->getExibirAvisos();
								}
								
								array_push($arrayComunicacao['submenu'], $arrayAvisos);
							}
							
							//Configurando Blog
							if ($this->getExibirBlog() || $editandoCurso) {
								$linkBlogSelecionado	=	false;
								if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'blog') {
									$linkBlogSelecionado	=	true;
								}
								$arrayBlog	=	array(	'texto' => texto('AREA_BLOG'),
														'href' => montaLink(array('curso', $this->getUrlCurso(), 'comunicacao', 'blog')),
														'class' => $linkBlogSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
								
								if ($editandoCurso) {
									$arrayBlog['href']		=	'';
									$arrayBlog['edicao']	=	true;
									$arrayBlog['name']		=	'strBlog';
									$arrayBlog['checked']	=	$this->getExibirBlog();
								}
								
								array_push($arrayComunicacao['submenu'], $arrayBlog);
							}
							
							//Configurando Chat
							if ($this->getExibirChat() || $editandoCurso) {
								$linkChatSelecionado	=	false;
								if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'chat') {
									$linkChatSelecionado	=	true;
								}
								$arrayChat	=	array(	'texto' => texto('AREA_CHAT'),
														'href' => montaLink(array('curso', $this->getUrlCurso(), 'comunicacao', 'chat')),
														'class' => $linkChatSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
								
								if ($editandoCurso) {
									$arrayChat['href']		=	'';
									$arrayChat['edicao']	=	true;
									$arrayChat['name']		=	'strChat';
									$arrayChat['checked']	=	$this->getExibirChat();
								}
								
								array_push($arrayComunicacao['submenu'], $arrayChat);
							}
							
							//Configurando Email
							if ($this->getExibirEmail() || $editandoCurso) {
								$linkEmailSelecionado	=	false;
								if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'email') {
									$linkEmailSelecionado	=	true;
								}
								$arrayEmail	=	array(	'texto' => texto('AREA_EMAIL'),
														'href' => montaLink(array('curso', $this->getUrlCurso(), 'comunicacao', 'email')),
														'class' => $linkEmailSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
								
								if ($editandoCurso) {
									$arrayEmail['href']		=	'';
									$arrayEmail['edicao']	=	true;
									$arrayEmail['name']		=	'strEmail';
									$arrayEmail['checked']	=	$this->getExibirEmail();
								}
								
								array_push($arrayComunicacao['submenu'], $arrayEmail);
							}
							
							//Configurando Forum
							if ($this->getExibirForum() || $editandoCurso) {
								$linkForumSelecionado	=	false;
								if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'forum') {
									$linkForumSelecionado	=	true;
								}
								$arrayForum	=	array(	'texto' => texto('AREA_FORUM'),
														'href' => montaLink(array('curso', $this->getUrlCurso(), 'comunicacao', 'forum')),
														'class' => $linkForumSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
								
								if ($editandoCurso) {
									$arrayForum['href']		=	'';
									$arrayForum['edicao']	=	true;
									$arrayForum['name']		=	'strForum';
									$arrayForum['checked']	=	$this->getExibirForum();
								}
								
								array_push($arrayComunicacao['submenu'], $arrayForum);
							}
							
							array_push($arrayMenu, $arrayComunicacao);
						}
						
						//Configurando Consulta
						if ($editandoCurso || ($this->getExibirBibliografia() || $this->getExibirGlossario() || $this->getExibirLinks())) {
							$linkConsultaSelecionado	=	false;
							if (sizeof($parametros) > 2 && $parametros['PARAMETRO_2'] == 'consulta') {
								$linkConsultaSelecionado	=	true;
							}
							$arrayConsulta	=	array(	'texto' => texto("AREA_CONSULTA"),
														'class' => $linkConsultaSelecionado ? 'itemMenuPrincipalTextoSelecionado' : 'itemMenuPrincipalTexto',
														'aberto' => true,
														'submenu' => array());
							
							//Configurando Bibliografia
							if ($this->getExibirBibliografia() || $editandoCurso) {
								$linkBibliografiaSelecionado	=	false;
								if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'bibliografia') {
									$linkBibliografiaSelecionado	=	true;
								}
								$arrayBibliografia	=	array(	'texto' => texto('AREA_BIBLIOGRAFIA'),
																'href' => montaLink(array('curso', $this->getUrlCurso(), 'consulta', 'bibliografia')),
																'class' => $linkBibliografiaSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
								
								if ($editandoCurso) {
									$arrayBibliografia['href']		=	'';
									$arrayBibliografia['edicao']	=	true;
									$arrayBibliografia['name']		=	'strBibliografia';
									$arrayBibliografia['checked']	=	$this->getExibirBibliografia();
								}
								
								array_push($arrayConsulta['submenu'], $arrayBibliografia);
							}
							
							//Configurando Glossario
							if ($this->getExibirGlossario() || $editandoCurso) {
								$linkGlossarioSelecionado	=	false;
								if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'glossario') {
									$linkGlossarioSelecionado	=	true;
								}
								$arrayGlossario	=	array(	'texto' => texto('AREA_GLOSSARIO'),
															'href' => montaLink(array('curso', $this->getUrlCurso(), 'consulta', 'glossario')),
															'class' => $linkGlossarioSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
								
								if ($editandoCurso) {
									$arrayGlossario['href']		=	'';
									$arrayGlossario['edicao']	=	true;
									$arrayGlossario['name']		=	'strGlossario';
									$arrayGlossario['checked']	=	$this->getExibirGlossario();
								}
								
								array_push($arrayConsulta['submenu'], $arrayGlossario);
							}
							
							//Configurando Links
							if ($this->getExibirLinks() || $editandoCurso) {
								$linkLinksSelecionado	=	false;
								if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'links') {
									$linkLinksSelecionado	=	true;
								}
								$arrayLinks	=	array(	'texto' => texto('AREA_LINKS'),
														'href' => montaLink(array('curso', $this->getUrlCurso(), 'consulta', 'links')),
														'class' => $linkLinksSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
								
								if ($editandoCurso) {
									$arrayLinks['href']		=	'';
									$arrayLinks['edicao']	=	true;
									$arrayLinks['name']		=	'strLinks';
									$arrayLinks['checked']	=	$this->getExibirLinks();
								}
								
								array_push($arrayConsulta['submenu'], $arrayLinks);
							}
							
							array_push($arrayMenu, $arrayConsulta);
						}
						
						//Configurando Atividades
						if ($visualizacao == 'Professor' || ($visualizacao == 'Aluno' && (sizeof($this->getAtividades()) > 0))) {
							$linkAtividadesSelecionado	=	false;
							if (sizeof($parametros) > 2 && $parametros['PARAMETRO_2'] == 'atividades') {
								$linkAtividadesSelecionado	=	true;
							}
							$arrayAtividades	=	array(	'texto' => texto('AREA_ATIVIDADES'),
															'href' => montaLink(array('curso', $this->getUrlCurso(), 'atividades')),
															'class' => $linkAtividadesSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal',
															'aberto' => true,
															'submenu' => array());
							
							/*
//Inserir cada modulo individualmente
							foreach ($this->getAtividades() as $chave => $atividade) {
								//TODO Pegar atividades
							}
*/
							
							array_push($arrayMenu, $arrayAtividades);
						}
						
						//Configurando Recursos
						if ($visualizacao == 'Professor' || ($visualizacao == 'Aluno' && (sizeof($this->getRecursos()) > 0))) {
							$linkRecursosSelecionado	=	false;
							if (sizeof($parametros) > 2 && $parametros['PARAMETRO_2'] == 'recursos') {
								$linkRecursosSelecionado	=	true;
							}
							$arrayRecursos	=	array(	'texto' => texto('AREA_RECURSOS'),
														'href' => montaLink(array('curso', $this->getUrlCurso(), 'recursos')),
														'class' => $linkRecursosSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal',
														'aberto' => true);
							
							//Inserir cada recurso individualmente
							foreach ($this->getTiposRecursos() as $chave => $tipo) {
								$linkRecursoAtualSelecionado	=	false;
								if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == canonizar($tipo['tipo'])) {
									$linkRecursoAtualSelecionado	=	true;
								}
								$arrayRecursoAtual	=	array(	'texto' => $tipo['tipo'],
																'href' => montaLink(array('curso', $this->getUrlCurso(), 'recursos', canonizar($tipo['tipo']))),
																'class' => $linkRecursoAtualSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
							}
							array_push($arrayMenu, $arrayRecursos);
						}
						
						//Configurando Participantes
						$linkParticipantesSelecionado	=	false;
						if (sizeof($parametros) > 2 && $parametros['PARAMETRO_2'] == 'participantes') {
							$linkParticipantesSelecionado	=	true;
						}
						$arrayParticipantes	=	array(	'texto' => texto('AREA_PARTICIPANTES'),
														'href' => montaLink(array('curso', $this->getUrlCurso(), 'participantes')),
														'class' => $linkParticipantesSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
						array_push($arrayMenu, $arrayParticipantes);
						
						//Configurando Gerencia
						if ($visualizacao == 'Professor') {
							$linkGerenciaSelecionado	=	false;
							if (sizeof($parametros) > 2 && $parametros['PARAMETRO_2'] == 'gerencia') {
								$linkGerenciaSelecionado	=	true;
							}
							$arrayGerencia	=	array(	'texto' => texto("AREA_GERENCIA"),
														'class' => $linkGerenciaSelecionado ? 'itemMenuPrincipalTextoSelecionado' : 'itemMenuPrincipalTexto',
														'aberto' => true,
														'submenu' => array());
							
							//Configurando Configuracoes
							$linkConfiguracoesSelecionado	=	false;
							if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'configuracoes') {
								$linkConfiguracoesSelecionado	=	true;
							}
							$arrayConfiguracoes	=	array(	'texto' => texto('AREA_CONFIGURACOES'),
															'href' => montaLink(array('curso', $this->getUrlCurso(), 'gerencia', 'configuracoes')),
															'class' => $linkConfiguracoesSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
							array_push($arrayGerencia['submenu'], $arrayConfiguracoes);
							
							//Configurando Participantes
							$linkGerenciaParticipantesSelecionado	=	false;
							if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'participantes') {
								$linkGerenciaParticipantesSelecionado	=	true;
							}
							$arrayGerenciaParticipantes	=	array(	'texto' => texto('AREA_GERENCIA_PARTICIPANTES'),
																	'href' => montaLink(array('curso', $this->getUrlCurso(), 'gerencia', 'participantes')),
																	'class' => $linkGerenciaParticipantesSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
							array_push($arrayGerencia['submenu'], $arrayGerenciaParticipantes);
							
							
							//Configurando Inscrever Participantes
							$linkInscreverSelecionado	=	false;
							if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'inscrever') {
								$linkInscreverSelecionado	=	true;
							}
							$arrayGerenciaInscrever	=	array(	'texto' => texto('AREA_GERENCIA_INSCREVER'),
																	'href' => montaLink(array('curso', $this->getUrlCurso(), 'gerencia', 'inscrever')),
																	'class' => $linkInscreverSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
							array_push($arrayGerencia['submenu'], $arrayGerenciaInscrever);
							
							//Configurando Gerencia de Grupos
							$linkGerenciaGruposSelecionado	=	false;
							if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'grupos') {
								$linkGerenciaGruposSelecionado	=	true;
							}
							$arrayGerenciaGrupos	=	array(	'texto' => texto('AREA_GERENCIA_GRUPOS'),
																'href' => montaLink(array('curso', $this->getUrlCurso(), 'gerencia', 'grupos')),
																'class' => $linkGerenciaGruposSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
							array_push($arrayGerencia['submenu'], $arrayGerenciaGrupos);
							
							//Configurando Gerencia de Grupos
							$linkGerenciaTurmasSelecionado	=	false;
							if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'turmas') {
								$linkGerenciaTurmasSelecionado	=	true;
							}
							$arrayGerenciaTurmas	=	array(	'texto' => texto('AREA_GERENCIA_TURMAS'),
																'href' => montaLink(array('curso', $this->getUrlCurso(), 'gerencia', 'turmas')),
																'class' => $linkGerenciaTurmasSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
							array_push($arrayGerencia['submenu'], $arrayGerenciaTurmas);
							
							//Configurando Gerencia de alterar Permissoes
							$linkGerenciaAlteraPermissaoSelecionado	=	false;
							if (sizeof($parametros) > 3 && $parametros['PARAMETRO_3'] == 'permissoes') {
								$linkGerenciaAlteraPermissaoSelecionado	=	true;
							}
							$arrayGerenciaAlterarPermissao	=	array(	'texto' => texto('AREA_GERENCIA_ALTERAR_PERMISSAO'),
																'href' => montaLink(array('curso', $this->getUrlCurso(), 'gerencia', 'permissoes')),
																'class' => $linkGerenciaAlteraPermissaoSelecionado ? 'itemMenuPrincipalSelecionado' : 'itemMenuPrincipal');
							array_push($arrayGerencia['submenu'], $arrayGerenciaAlterarPermissao);
							
							array_push($arrayMenu, $arrayGerencia);
							
							//TODO outros itens de gerencia
						}
					}
				}
				return	$arrayMenu;
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
	
	/**
	 * Salva o Passo 1 da Criação do Curso
	 * @param $idUsuario
	 * @param $strTitulo
	 * @param $strUrl
	 * @param $fileLogo
	 * @param $strArea
	 * @param $strNivel
	 * @param $strDataInicioMatricula
	 * @param $strDataTerminoMatricula
	 * @param $strDataInicioCurso
	 * @param $strDataTerminoCurso
	 * @param $strVagas
	 * @param $strCodigo
	 * @param $strPublicoAlvo
	 * @param $strObjetivos
	 * @param $strEmenta
	 * @param $strOrientacoes
	 * @param $strCronograma
	 * @return false (em caso de erro)  ou array(idCurso, idTurma) (em caso de sucesso)
	 */
	public function salvarPasso1($idUsuario, $strTitulo, $strNomeCurto, $strUrl, $fileLogo, $strArea, $strNivel, $rdPodemMatricular, $strDataInicioMatricula, $strDataTerminoMatricula, $strDataInicioCurso, $strDataTerminoCurso, $strVagas, $strCodigo, $strPublicoAlvo, $strObjetivos, $strEmenta, $strOrientacoes, $strCronograma) {
		if (Curso::validar('passo1', array(	'strTitulo' => $strTitulo,
											'strUrl' => $strUrl,
											'validarUrl' => true,
											'strArea' => $strArea,
											'strNivel' => $strNivel,
											'rdPodemMatricular' => $rdPodemMatricular,
											'strDataInicioMatricula' => $strDataInicioMatricula,
											'strDataTerminoMatricula' => $strDataTerminoMatricula,
											'strDataInicioCurso' => $strDataInicioCurso,
											'strDataTerminoCurso' => $strDataTerminoCurso,
											'strVagas' => $strVagas,
											'strCodigo' => $strCodigo,
											'strPublicoAlvo' => $strPublicoAlvo,
											'strObjetivos' => $strObjetivos,
											'strEmenta' => $strEmenta,
											'strOrientacoes' => $strOrientacoes,
											'strCronograma' => $strCronograma,
											'fileLogo' => $fileLogo))) {
			//Executando LOCK nas tabelas Cursos e Turmas para resgatar o ID do curso inserido
			
			$strQuery	=	"LOCK TABLES cursos WRITE, turmas WRITE;";
			

			if (!($conexao = BancoDados::conectaBD())) {
				return false;

			}
				
			if (!BancoDados::query($strQuery, $conexao)) {
				return false;
			}
			
			$strVagas 		=	$strVagas != '' ? $strVagas : 'null';
			$strCodigo 		=	$strCodigo != '' ? "'" . $strCodigo . "'" : 'null';
			$strPublicoAlvo =	$strPublicoAlvo != '' ? "'" . $strPublicoAlvo . "'" : 'null';
			$strObjetivos 	=	$strObjetivos != '' ? "'" . $strObjetivos . "'" : 'null';
			$strEmenta 		=	$strEmenta != '' ? "'" . $strEmenta . "'" : 'null';
			$strOrientacoes =	$strOrientacoes != '' ? "'" . $strOrientacoes . "'" : 'null';
			$strCronograma 	=	$strCronograma != '' ? "'" . $strCronograma . "'" : 'null';
			$taVazio = false;
			if(empty($strDataTerminoMatricula) || empty($strDataInicioMatricula)){
				$taVazio = true;
			}
			if($taVazio){
				$strQuery	=	"INSERT INTO cursos VALUES (default, " . $idUsuario . ", " . $strArea . ", 1, '" . $strTitulo . "', '" . $strUrl . "', '" . $strNivel . "', null, null, null, '" . $strDataInicioCurso . "', '" . $strDataTerminoCurso . "', NOW(), 0, 0, " . $strVagas . ", " . $strPublicoAlvo . ", " . $strObjetivos . ", " . $strEmenta . ", " . $strOrientacoes . ", " . $strCronograma . ", 0, 0, 0, 0, 0, 0, 0, 0, 'Módulos', 1, " . $strCodigo . ", 'Não', NOW(), '".$strNomeCurto."' );";
			}
			else{
				$strQuery	=	"INSERT INTO cursos VALUES (default, " . $idUsuario . ", " . $strArea . ", 1, '" . $strTitulo . "', '" . $strUrl . "', '" . $strNivel . "', null, '" . $strDataInicioMatricula . "', '" . $strDataTerminoMatricula . "', '" . $strDataInicioCurso . "', '" . $strDataTerminoCurso . "', NOW(), 0, 0, " . $strVagas . ", " . $strPublicoAlvo . ", " . $strObjetivos . ", " . $strEmenta . ", " . $strOrientacoes . ", " . $strCronograma . ", 0, 0, 0, 0, 0, 0, 0, 0, 'Módulos', 1, " . $strCodigo . ", 'Não', NOW(), '".$strNomeCurto."' );";
			}
			// BancoDados::query($strQuery, $conexao);
			if(BancoDados::query($strQuery, $conexao) == false){
				return false;
			}
			$idCurso	=	mysql_insert_id($conexao);
			
			$strQuery	=	"INSERT INTO turmas VALUES (default, " . $idCurso . ", NULL);";
			
			if (BancoDados::query($strQuery, $conexao) == false) {
				$strQuery	=	"DELETE FROM cursos WHERE idCurso = " . $idCurso . ";";
				if (!BancoDados::query($strQuery))
					email(constant('EMAIL_ADM_FROM'), texto('ERRO'), texto('ERRO'), textoEmail('EMAIL_ERRO_CRIAR_CURSO_PASSO1', array($strTitulo, $idCurso, $idCurso)));
				return false;
			}
			
			$idTurma 	=	mysql_insert_id($conexao);
			
			//Executando o Unlock ao desconectar
			BancoDados::desconectaBD($conexao);
			
			$strQuery	 =	"INSERT INTO grupos VALUES (default, " . $idTurma . ", 0, NULL)";

			if (!BancoDados::query($strQuery)) {
		
				$strQuery	=	"DELETE FROM cursos WHERE idCurso = " . $idCurso . ";";
				if (!BancoDados::query($strQuery)){
					email(constant('EMAIL_ADM_FROM'), texto('ERRO'), texto('ERRO'), textoEmail('EMAIL_ERRO_CRIAR_CURSO_PASSO1', array($strTitulo, $idCurso, $idCurso)));
				return false;
				}
			}
			
			$strQuery	 =	"INSERT INTO turmasProfessores VALUES (" . $idTurma . ", " . $idUsuario . ", NOW(), NOW(), 0, 0, 0)";
			if(!BancoDados::query($strQuery)) {
				echo "i'm on a boat motherfucker";
				die;
				$strQuery	=	"DELETE FROM cursos WHERE idCurso = " . $idCurso . ";";
				if (!BancoDados::query($strQuery)){
					email(constant('EMAIL_ADM_FROM'), texto('ERRO'), texto('ERRO'), textoEmail('EMAIL_ERRO_CRIAR_CURSO_PASSO1', array($strTitulo, $idCurso, $idCurso)));
					return false;
				}
			}
			
			$nomeProfessor 	=	"&lt;NOME DO PROFESSOR&gt;";
			$resultado		=	Usuario::getUsuarioPorId($idUsuario);
			if (is_array($resultado) && sizeof($resultado['listaResultados']) == 1) {
				$nomeProfessor	=	$resultado['listaResultados'][0]['nome'];
			}
			
			email(constant('EMAIL_ADM_FROM'), textoEmail('EMAIL_ASSUNTO_NOVO_CURSO'), textoEmail('EMAIL_TITULO_NOVO_CURSO'), textoEmail('EMAIL_NOVO_CURSO', array(montaLink(array(getUrlCompleta() . 'curso', $strUrl), 'externo'), $strTitulo, montaLink(array(getUrlCompleta() . 'usuario', $idUsuario), 'externo'), $nomeProfessor, getDataFormatada($strDataInicioCurso))));
			
			//Salvando o Logo do Curso
			if ($fileLogo['name'] != '') {
				$arquivoLogo		=	'curso' . $idCurso . '_original.' . array_pop(explode('.', $fileLogo['name']));
				$arquivoLogoGrande	=	'curso' . $idCurso . '_medio.' . array_pop(explode('.', $fileLogo['name']));
				$arquivoLogoPequena	=	'curso' . $idCurso . '_pequeno.' . array_pop(explode('.', $fileLogo['name']));
				if (move_uploaded_file($fileLogo['tmp_name'], constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogo)) {
					redimensionaImagem(constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogo, constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogoGrande, constant('__LARGURA_GRANDE_LOGO_CURSO__'), constant('__ALTURA_GRANDE_LOGO_CURSO__'), 100);
					redimensionaImagem(constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogo, constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogoPequena, constant('__LARGURA_PEQUENA_LOGO_CURSO__'), constant('__ALTURA_PEQUENA_LOGO_CURSO__'), 100);
					$strQuery 	=	"UPDATE cursos SET logo = '" . $arquivoLogo . "' WHERE idCurso = " . $idCurso . ";";
					
					if (!BancoDados::query($strQuery)) {
						unlink(constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogo);
						unlink(constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogoGrande);
						unlink(constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogoPequena);
						
						adicionaMensagem(texto('MENSAGEM_CRIAR_CURSO_PASSO1_SALVAR_LOGO'));
					}
				}
				else {
					adicionaMensagem(texto('MENSAGEM_CRIAR_CURSO_PASSO1_SALVAR_LOGO'));
				}
			}
			return array( 'idCurso' => $idCurso, 'idTurma' => $idTurma);
		}
		else {
			return false;
		}
	}
	
	public function editar ($idCurso, $local, $campo) {
		
		$reinserirLogo	=	false;
		
		$strQuery 	=	"UPDATE cursos SET ";
		switch ($local) {
			case 'passo1' :
				$strTitulo					= $campo['strTitulo'];
				$strNomeCurto               = $campo['strNomeCurto'];
				$strUrl						= $campo['strUrl'];
				$urlAnterior				= $campo['urlAnterior'];
				$fileLogo					= $campo['fileLogo'];
				$removerLogo				= $campo['removerLogo'];
				$logoAnterior				= $campo['logoAnterior'];
				$strArea					= $campo['strArea'];
				$strNivel					= $campo['strNivel'];
				$rdPodemMatricular			= $campo['rdPodemMatricular'];
				$strDataInicioMatricula		= $campo['strDataInicioMatricula'];
				$strDataTerminoMatricula	= $campo['strDataTerminoMatricula'];
				$strDataInicioCurso			= $campo['strDataInicioCurso'];
				$strDataTerminoCurso		= $campo['strDataTerminoCurso'];
				$strVagas					= $campo['strVagas'];
				$strCodigo					= $campo['strCodigo'];
				$strPublicoAlvo				= $campo['strPublicoAlvo'];
				$strObjetivos				= $campo['strObjetivos'];
				$strEmenta					= $campo['strEmenta'];
				$strOrientacoes				= $campo['strOrientacoes'];
				$strCronograma				= $campo['strCronograma'];
				
				$validarUrl	=	false;
				if ($strUrl != $urlAnterior)
					$validarUrl	=	true;
				
				if (Curso::validar('passo1', array(	'strTitulo' => $strTitulo,
										'strUrl' => $strUrl,
										'validarUrl' => $validarUrl,
										'strArea' => $strArea,
										'strNivel' => $strNivel,
										'rdPodemMatricular' => $rdPodemMatricular,
										'strDataInicioMatricula' => $strDataInicioMatricula,
										'strDataTerminoMatricula' => $strDataTerminoMatricula,
										'strDataInicioCurso' => $strDataInicioCurso,
										'strDataTerminoCurso' => $strDataTerminoCurso,
										'strVagas' => $strVagas,
										'strCodigo' => $strCodigo,
										'strPublicoAlvo' => $strPublicoAlvo,
										'strObjetivos' => $strObjetivos,
										'strEmenta' => $strEmenta,
										'strOrientacoes' => $strOrientacoes,
										'strCronograma' => $strCronograma,
										'fileLogo' => $fileLogo))) 
				{
					$strVagas 		=	$strVagas != '' ? $strVagas : 'null';
					$strCodigo 		=	$strCodigo != '' ? "'" . $strCodigo . "'" : 'null';
					$strPublicoAlvo =	$strPublicoAlvo != '' ? "'" . $strPublicoAlvo . "'" : 'null';
					$strObjetivos 	=	$strObjetivos != '' ? "'" . $strObjetivos . "'" : 'null';
					$strEmenta 		=	$strEmenta != '' ? "'" . $strEmenta . "'" : 'null';
					$strOrientacoes =	$strOrientacoes != '' ? "'" . $strOrientacoes . "'" : 'null';
					$strCronograma 	=	$strCronograma != '' ? "'" . $strCronograma . "'" : 'null';
					$strRemoverLogo	=	$removerLogo ? ", logo = null" : "";
					
					$strQuery .= 	"nome = '" . $strTitulo . "', nomeCurto = '" . $strNomeCurto . "', urlCurso = '" . $strUrl .  "', idArea = " . $strArea . ", nivel = '" . $strNivel . "', inicioMatricula = '" . $strDataInicioMatricula . "', terminoMatricula = '" . $strDataTerminoMatricula . "', inicioCurso = '" . $strDataInicioCurso . "', terminoCurso = '" . $strDataTerminoCurso . "', vagas = " . $strVagas . ", codigoInscricao = " . $strCodigo . ", publicoAlvo = " . $strPublicoAlvo . ", objetivos = " . $strObjetivos . ", ementa = " . $strEmenta . ", orientacao = " . $strOrientacoes . ", cronograma = " . $strCronograma . $strRemoverLogo;
					
					if ($removerLogo) {
						unlink(constant('__CAMINHO_LOGO_CURSO__') . "curso" . $idCurso . "_original." . array_pop(explode('.', $logoAnterior)));
						unlink(constant('__CAMINHO_LOGO_CURSO__') . "curso" . $idCurso . "_medio." . array_pop(explode('.', $logoAnterior)));
						unlink(constant('__CAMINHO_LOGO_CURSO__') . "curso" . $idCurso . "_pequeno." . array_pop(explode('.', $logoAnterior)));
					}
					
					if ($fileLogo['name'] != '')
						$reinserirLogo	=	true;
				}
				else {
					return false;
				}
				break;

			case 'passo3' :
				$strBibliografia 	=	$campo['strBibliografia'] == 'on' ? 'true' : 'false';
				$strGlossario 		=	$campo['strGlossario'] == 'on' ? 'true' : 'false';
				$strLinks 			=	$campo['strLinks'] == 'on' ? 'true' : 'false';
				
				$strAvisos	 		=	$campo['strAvisos'] == 'on' ? 'true' : 'false';
				$strBlog	 		=	$campo['strBlog'] == 'on' ? 'true' : 'false';
				$strChat 			=	$campo['strChat'] == 'on' ? 'true' : 'false';
				$strEmail		 	=	$campo['strEmail'] == 'on' ? 'true' : 'false';
				$strForum 			=	$campo['strForum'] == 'on' ? 'true' : 'false';
				
				$strIdNomenclaturaModulo	=	$campo['strIdNomenclaturaModulo'];
				$strOutraNomenclatura		=	$campo['strOutraNomenclatura'];
				$strNomenclaturaModulo		=	$campo['strNomenclaturaModulo'];
				
				$strQueryNomenclatura	=	"";
				
				if ($strIdNomenclaturaModulo == 'outro')
					$strNomenclaturaModulo	=	$strOutraNomenclatura;

				$validarNomenclatura		=	false;
				if (!is_numeric($strIdNomenclaturaModulo)) {
					$validarNomenclatura	=	true;
					$strQueryNomenclatura	.=	"idNomenclaturaPadrao = null, ";
				}
				else
					$strQueryNomenclatura	.=	"idNomenclaturaPadrao = " . $strIdNomenclaturaModulo . ", ";
				
				$strQueryNomenclatura	.=	"nomeModulo = '" . $strNomenclaturaModulo . "'";
				
				if (Curso::validar($local, array('strNomenclaturaModulo' => $strNomenclaturaModulo, 'validarNomenclatura' => $validarNomenclatura))) {
					$strQuery .= "exibirBibliografia = " . $strBibliografia . ", exibirGlossario = " . $strGlossario . ", exibirLinks = " . $strLinks . ", exibirAvisos = " . $strAvisos . ", exibirBlog = " . $strBlog . ", exibirChat = " . $strChat . ", exibirEmail = " . $strEmail . ", exibirForum = " . $strForum . ", " . $strQueryNomenclatura;	
				}
				else {
					return false;
				}
				break;

			case 'passo5' :
				$strLayout			=	$campo['strLayout'];
				if (Curso::validar($local, array('strLayout' => $strLayout))) {
					$strQuery .= "idLayout = " . $strLayout;
				}
				else {
					return false;
				}
				break;

			case 'passo6' :
				$idUsuario 				=	$campo['idUsuario'];
				$idTurma 				=	$campo['idTurma'];
				$strLiberarEmail 		=	$campo['strLiberarEmail'] == 'on' ? 'true' : 'false';
				$strLiberarTelefone		=	$campo['strLiberarTelefone'] == 'on' ? 'true' : 'false';
				$strLiberarEndereco		=	$campo['strLiberarEndereco'] == 'on' ? 'true' : 'false';
				
				$strLiberarConteudo		=	$campo['strLiberarConteudo'];
				$strLiberarCurso		=	$campo['strLiberarCurso'];
				if (Curso::validar($local, array(	'strLiberarConteudo' => $strLiberarConteudo,
													'strLiberarCurso' => $strLiberarCurso))) {
					$strLiberarConteudo = $strLiberarConteudo != 'nao' ? 	($strLiberarConteudo != 'sim' ? 'Após o Término' : 'Sim') : 'Não';
					$strLiberarCurso = $strLiberarCurso == 'nao' ? 'false' : 'true';
					$strQuery 	.=	"conteudoLivre = '" . $strLiberarConteudo . "', liberado = "	. $strLiberarCurso;
					
					$strQuery2	=	"UPDATE turmasProfessores SET exibirEmailProfessor = " . $strLiberarEmail . ", exibirTelefoneProfessor = " . $strLiberarTelefone . ", exibirEnderecoProfessor = " . $strLiberarEndereco . " WHERE idTurma = " . $idTurma . " AND idUsuario = " . $idUsuario .";";
					if (!BancoDados::query($strQuery2)){
						return false;
					}
				}
				else {
					return false;
				}
				break;
			case 'ativarEdicao' :
				$strTitulo			= $campo['strTitulo'];
				$fileLogo			= $campo['fileLogo'];
				$removerLogo		= $campo['removerLogo'];
				$logoAnterior		= $campo['logoAnterior'];
				$strPublicoAlvo		= $campo['strPublicoAlvo'];
				$strObjetivos		= $campo['strObjetivos'];
				$strEmenta			= $campo['strEmenta'];
				$strOrientacoes		= $campo['strOrientacoes'];
				$strCronograma		= $campo['strCronograma'];
				
				$strBibliografia 	=	$campo['strBibliografia'] == 'on' ? 'true' : 'false';
				$strGlossario 		=	$campo['strGlossario'] == 'on' ? 'true' : 'false';
				$strLinks 			=	$campo['strLinks'] == 'on' ? 'true' : 'false';
				
				$strAvisos	 		=	$campo['strAvisos'] == 'on' ? 'true' : 'false';
				$strBlog	 		=	$campo['strBlog'] == 'on' ? 'true' : 'false';
				$strChat 			=	$campo['strChat'] == 'on' ? 'true' : 'false';
				$strEmail		 	=	$campo['strEmail'] == 'on' ? 'true' : 'false';
				$strForum 			=	$campo['strForum'] == 'on' ? 'true' : 'false';
				
				if (Curso::validar('ativarEdicao', array(	'strTitulo' => $strTitulo,
															'strPublicoAlvo' => $strPublicoAlvo,
															'strObjetivos' => $strObjetivos,
															'strEmenta' => $strEmenta,
															'strOrientacoes' => $strOrientacoes,
															'strCronograma' => $strCronograma,
															'fileLogo' => $fileLogo))) {
					$strPublicoAlvo =	$strPublicoAlvo != '' ? "'" . $strPublicoAlvo . "'" : 'null';
					$strObjetivos 	=	$strObjetivos != '' ? "'" . $strObjetivos . "'" : 'null';
					$strEmenta 		=	$strEmenta != '' ? "'" . $strEmenta . "'" : 'null';
					$strOrientacoes =	$strOrientacoes != '' ? "'" . $strOrientacoes . "'" : 'null';
					$strCronograma 	=	$strCronograma != '' ? "'" . $strCronograma . "'" : 'null';
					$strRemoverLogo	=	$removerLogo ? ", logo = null" : "";
					
					$strQuery .= 	"nome = '" . $strTitulo . "', publicoAlvo = " . $strPublicoAlvo . ", objetivos = " . $strObjetivos . ", ementa = " . $strEmenta . ", orientacao = " . $strOrientacoes . ", cronograma = " . $strCronograma . $strRemoverLogo . ", exibirBibliografia = " . $strBibliografia . ", exibirGlossario = " . $strGlossario . ", exibirLinks = " . $strLinks . ", exibirAvisos = " . $strAvisos . ", exibirBlog = " . $strBlog . ", exibirChat = " . $strChat . ", exibirEmail = " . $strEmail . ", exibirForum = " . $strForum;
					
					if ($removerLogo) {
						unlink(constant('__CAMINHO_LOGO_CURSO__') . "curso" . $idCurso . "_original." . array_pop(explode('.', $logoAnterior)));
						unlink(constant('__CAMINHO_LOGO_CURSO__') . "curso" . $idCurso . "_medio." . array_pop(explode('.', $logoAnterior)));
						unlink(constant('__CAMINHO_LOGO_CURSO__') . "curso" . $idCurso . "_pequeno." . array_pop(explode('.', $logoAnterior)));
					}
					
					if ($fileLogo['name'] != '')
						$reinserirLogo	=	true;
				}
				else {
					return false;
				}
				
				break;
				
			case 'configuracoes':
				$strUrl						= $campo['strUrl'];
				$urlAnterior				= $campo['urlAnterior'];
				$strArea					= $campo['strArea'];
				$strNivel					= $campo['strNivel'];
				$strDataInicioMatricula		= $campo['strDataInicioMatricula'];
				$strDataTerminoMatricula	= $campo['strDataTerminoMatricula'];
				$strDataInicioCurso			= $campo['strDataInicioCurso'];
				$strDataTerminoCurso		= $campo['strDataTerminoCurso'];
				
				$validaDataInicioMatricula		= $campo['validaDataInicioMatricula'];
				$validaDataTerminoMatricula		= $campo['validaDataTerminoMatricula'];
				$validaDataInicioCurso			= $campo['validaDataInicioCurso'];
				$validaDataTerminoCurso			= $campo['validaDataTerminoCurso'];
				
				$strVagas					= $campo['strVagas'];
				$strCodigo					= $campo['strCodigo'];
				
				$strLiberarConteudo			=	$campo['strLiberarConteudo'];
				$strLiberarCurso			=	$campo['strLiberarCurso'];
				
				$strLayout					=	$campo['strLayout'];
				
				$idUsuario 					=	$campo['idUsuario'];
				$idTurma 					=	$campo['idTurma'];
				if ($idTurma != 0) {
					$strLiberarEmail 		=	$campo['strLiberarEmail'] == 'on' ? 'true' : 'false';
					$strLiberarTelefone		=	$campo['strLiberarTelefone'] == 'on' ? 'true' : 'false';
					$strLiberarEndereco		=	$campo['strLiberarEndereco'] == 'on' ? 'true' : 'false';
				}
				
				$validarUrl	=	false;
				if ($strUrl != $urlAnterior)
					$validarUrl	=	true;
				
				if (Curso::validar('configuracoes', array(	'strUrl' => $strUrl,
															'validarUrl' => $validarUrl,
															'strArea' => $strArea,
															'strNivel' => $strNivel,
															'strDataInicioMatricula' => $strDataInicioMatricula,
															'strDataTerminoMatricula' => $strDataTerminoMatricula,
															'strDataInicioCurso' => $strDataInicioCurso,
															'strDataTerminoCurso' => $strDataTerminoCurso,
															'validaDataInicioMatricula' => $validaDataInicioMatricula,
															'validaDataTerminoMatricula' => $validaDataTerminoMatricula,
															'validaDataInicioCurso' => $validaDataInicioCurso,
															'validaDataTerminoCurso' => $validaDataTerminoCurso,
															'strVagas' => $strVagas,
															'strCodigo' => $strCodigo,
															'strLiberarConteudo' => $strLiberarConteudo,
															'strLiberarCurso' => $strLiberarCurso,
															'strLayout' => $strLayout))) {
					$strVagas 		=	$strVagas != '' ? $strVagas : 'null';
					$strCodigo 		=	$strCodigo != '' ? "'" . $strCodigo . "'" : 'null';
					$strLiberarConteudo = $strLiberarConteudo != 'nao' ? 	($strLiberarConteudo != 'sim' ? 'Após o Término' : 'Sim') : 'Não';
					$strLiberarCurso = $strLiberarCurso == 'nao' ? 'false' : 'true';
					
					$strQuery .= 	"urlCurso = '" . $strUrl .  "', idArea = " . $strArea . ", nivel = '" . $strNivel . "', inicioMatricula = '" . $strDataInicioMatricula . "', terminoMatricula = '" . $strDataTerminoMatricula . "', inicioCurso = '" . $strDataInicioCurso . "', terminoCurso = '" . $strDataTerminoCurso . "', vagas = " . $strVagas . ", codigoInscricao = " . $strCodigo . ", conteudoLivre = '" . $strLiberarConteudo . "', liberado = "	. $strLiberarCurso . ", idLayout = " . $strLayout;
					
					if($idTurma != 0) {
						$strQuery2	=	"UPDATE turmasProfessores SET exibirEmailProfessor = " . $strLiberarEmail . ", exibirTelefoneProfessor = " . $strLiberarTelefone . ", exibirEnderecoProfessor = " . $strLiberarEndereco . " WHERE idTurma = " . $idTurma . " AND idUsuario = " . $idUsuario .";";
						if (!BancoDados::query($strQuery2)){
							return false;
						}
						
					}
				}
				else {
					return false;
				}
				
				break;
			default:
				return false;
				break;
		}
		
		$strQuery	.=	" WHERE idCurso = " . $idCurso . ";";
		if (!BancoDados::query($strQuery)){
			return false;
		}
		atualizaCurso();
		if ($reinserirLogo) {
			//Salvando o Logo do Curso
			$arquivoLogo		=	'curso' . $idCurso . '_original.' . array_pop(explode('.', $fileLogo['name']));
			$arquivoLogoGrande	=	'curso' . $idCurso . '_medio.' . array_pop(explode('.', $fileLogo['name']));
			$arquivoLogoPequena	=	'curso' . $idCurso . '_pequeno.' . array_pop(explode('.', $fileLogo['name']));
			if (move_uploaded_file($fileLogo['tmp_name'], constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogo)) {
				redimensionaImagem(constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogo, constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogoGrande, constant('__LARGURA_GRANDE_LOGO_CURSO__'), constant('__ALTURA_GRANDE_LOGO_CURSO__'), 100);
				redimensionaImagem(constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogo, constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogoPequena, constant('__LARGURA_PEQUENA_LOGO_CURSO__'), constant('__ALTURA_PEQUENA_LOGO_CURSO__'), 100);
				$strQuery2 	=	"UPDATE cursos SET logo = '" . $arquivoLogo . "' WHERE idCurso = " . $idCurso . ";";
				
				if (!BancoDados::query($strQuery2)) {
					unlink(constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogo);
					unlink(constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogoGrande);
					unlink(constant('__CAMINHO_LOGO_CURSO__') . $arquivoLogoPequena);
					
					adicionaMensagem(texto('MENSAGEM_CRIAR_CURSO_PASSO1_SALVAR_LOGO'));
				}
			}
			else {
				adicionaMensagem(texto('MENSAGEM_CRIAR_CURSO_PASSO1_SALVAR_LOGO'));
			}
		}
		atualizaCurso();
		return true;
	}
	
	/**
	 * Verifica se a URL requerida pelo professor ja esta sendo usada em outro curso
	 * @return 
	 * @param object $strUrl
	 */
	public static function verificaUrlExistente($strUrl) {
		$strQuery 	=	'SELECT idCurso FROM cursos WHERE urlCurso = "' . $strUrl . '";';
		$resultado = BancoDados::query($strQuery);
		if (is_array($resultado ) && sizeof($resultado) > 0) {
			return $resultado[0]['idCurso'];
		}
		else {
			return false;
		}
	}
	
	public static function apagar($idCurso) {
		$strQuery 	=	"UPDATE cursos SET apagado = 1 WHERE idCurso = " . $idCurso;
		
		return BancoDados::query($strQuery);
	}
	//AQUIIIII
	public static function reativar($idCurso) {
		$strQuery 	=	"UPDATE cursos SET apagado = 0 WHERE idCurso = " . $idCurso;
		atualizaCurso();
		return BancoDados::query($strQuery);
	}
	
	public function validar($local, $campo) {
		$validou    					=	true;
		$validouDataInicioMatricula		=	true;
		$validouDataTerminoMatricula	=	true;
		$validouDataInicioCurso			=	true;
		$validouDataTerminoCurso		=	true;
		
		//Valida o Titulo do Curso
		if (($local == 'passo1' || $local == 'ativarEdicao') && !validaAlfaNumerico($campo['strTitulo'], constant('__TAM_TITULO_CURSO__'))) {
			$validou             =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_TITULO_DO_CURSO'))), 'erro');	
		
		}
		

		//Valida a url do Curso
		if (($local == 'passo1' || $local == 'configuracoes') && !validaUrl($campo['strUrl'], constant('__TAM_URL_CURSO__'))) {
			$validou             =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_URL'))), 'erro');

		}
		else {
			if (($local == 'passo1' || $local == 'configuracoes') && $campo['validarUrl'] && Curso::verificaUrlExistente($campo['strUrl'])) {
				$validou             =    false;
				adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_URL_EXISTENTE'), 'erro');
			}
		}
		
		//Valida a area do Curso
		if (($local == 'passo1' || $local == 'configuracoes') && !validaNumero($campo['strArea'])) {
		    $validou             =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_SELECT', array(texto('DADOS_AREA_DE_CONHECIMENTO'))), 'erro');

		}
		
		//Valida o nivel do Curso
		if (($local == 'passo1' || $local == 'configuracoes') && $campo['strNivel'] == '--') {
			$validou             =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_SELECT', array(texto('DADOS_NIVEL'))), 'erro');
			
		}
		
		$dataAtual 	=	date('Y-m-d', time());
		//Valida a data de inicio de matricula
		if(($campo['rdPodemMatricular'] != 1 && !empty($campo['strDataInicioMatricula'])) || $campo['rdPodemMatricular'] == 1){
			if (($local == 'passo1' || ($local == 'configuracoes' && $campo['validaDataInicioMatricula'])) && !validaDataString($campo['strDataInicioMatricula'])) {
				$validou					=	false;
				$validouDataInicioMatricula	=	false;
				adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_DATA_DE_INICIO_MATRICULA'))), 'erro');	
				
			}
		}
		
		//Valida a data de termino de matricula
		
		if(($campo['rdPodemMatricular'] != 1 && !empty($campo['strDataInicioMatricula'])) || $campo['rdPodemMatricular'] == 1){
			if (($local == 'passo1' || ($local == 'configuracoes' && $campo['validaDataTerminoMatricula'])) && (!validaDataString($campo['strDataTerminoMatricula']))){
				$validou						=	false;
				$validouDataTerminoMatricula	=	false;
				adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_DATA_DE_TERMINO_MATRICULA'))), 'erro');
				
			}
			else {
				if (($local == 'passo1' || ($local == 'configuracoes' && $campo['validaDataTerminoMatricula'])) && $validouDataInicioMatricula && comparaDatasString($campo['strDataInicioMatricula'], $campo['strDataTerminoMatricula']) <= 0) {
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_COMPARACAO_DATAS', array(texto('DADOS_DATA_DE_TERMINO_MATRICULA'), texto('MAIOR'), texto('DADOS_DATA_DE_INICIO_MATRICULA'))), 'erro');
					
				}
			}
		}
		
		//Valida a data de inicio do curso
		if (($local == 'passo1' || ($local == 'configuracoes' && $campo['validaDataInicioCurso'])) && !validaDataString($campo['strDataInicioCurso'])){
			$validou					=	false;
			$validouDataInicioCurso		=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_DATA_DE_INICIO_CURSO'))), 'erro');
			
		}
		
		//Valida a data de termino do curso
		if (($local == 'passo1' || ($local == 'configuracoes' && $campo['validaDataTerminoCurso'])) && (!validaDataString($campo['strDataTerminoCurso']))){
			$validou					=	false;
			$validouDataTerminoCurso	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_DATA_DE_TERMINO_CURSO'))), 'erro');
			
		}
		else {
			if (($local == 'passo1' || ($local == 'configuracoes' && $campo['validaDataTerminoCurso'])) && $validouDataTerminoMatricula && comparaDatasString($campo['strDataTerminoMatricula'], $campo['strDataTerminoCurso']) < 0) {
				$validou	=	false;
				adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_COMPARACAO_DATAS', array(texto('DADOS_DATA_DE_TERMINO_CURSO'), texto('MAIOR_IGUAL'), texto('DADOS_DATA_DE_TERMINO_MATRICULA'))), 'erro');
			
			}
			if (($local == 'passo1' || ($local == 'configuracoes' && $campo['validaDataTerminoCurso'])) && $validouDataInicioCurso && comparaDatasString($campo['strDataInicioCurso'], $campo['strDataTerminoCurso']) <= 0) {
				$validou	=	false;
				adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_COMPARACAO_DATAS', array(texto('DADOS_DATA_DE_TERMINO_CURSO'), texto('MAIOR'), texto('DADOS_DATA_DE_INICIO_CURSO'))), 'erro');
			
			}
		}
		
		//Valida o numero de Vagas
		if (($local == 'passo1' || $local == 'configuracoes') && ($campo['strVagas'] <= 0 || !validaNumero($campo['strVagas'])) && $campo['strVagas'] != '') {
		    $validou             =    false;
		    adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_VAGAS'))), 'erro');
		
		}
		
		//Valida o Codigo do curso
		if (($local == 'passo1' || $local == 'configuracoes') && !validaAlfaNumerico($campo['strCodigo'], constant('__TAM_CODIGO_CURSO__')) && $campo['strCodigo'] != '') {
		    $validou             =    false;
		    adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_CODIGO_INSCRICAO'))), 'erro');
		
		}
		
		/*
		//Validacao do Publico Alvo
		if (($local == 'passo1') && !validaAlfaNumerico($campo['strPublicoAlvo'], constant('__TAM_PUBLICO_ALVO_CURSO__')) && $campo['strPublicoAlvo'] != ''){
		    $validou            =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_PUBLICO_ALVO'))), 'erro');;   
		}
		
		//Validacao dos Objetivos
		if (($local == 'passo1') && !validaAlfaNumerico($campo['strObjetivos'], constant('__TAM_OBJETIVOS_CURSO__')) && $campo['strObjetivos'] != ''){
		    $validou            =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_OBJETIVOS'))), 'erro');;   
		}
		
		//Validacao da Ementa
		if (($local == 'passo1') && !validaAlfaNumerico($campo['strEmenta'], constant('__TAM_EMENTA_CURSO__')) && $campo['strEmenta'] != ''){
		    $validou            =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_EMENTA'))), 'erro');;   
		}
		
		//Validacao das Orientacoes
		if (($local == 'passo1') && !validaAlfaNumerico($campo['strOrientacoes'], constant('__TAM_ORIENTACOES_CURSO__')) && $campo['strOrientacoes'] != ''){
		    $validou            =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_ORIENTACOES'))), 'erro');;   
		}
		
		//Validacao do Cronograma
		if (($local == 'passo1') && !validaAlfaNumerico($campo['strCronograma'], constant('__TAM_CRONOGRAMA_CURSO__')) && $campo['strCronograma'] != ''){
		    $validou            =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_CRONOGRAMA'))), 'erro');;   
		}
		
		//Validacao do Nome dado ao Modulo
		if (($local == 'passo3') && $campo['validarNomenclatura'] && !validaAlfabetico($campo['strNomenclaturaModulo'], constant('__TAM_NOMENCLATURA_MODULO__'))){
		    $validou            =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_FORMATO'))), 'erro');;   
		}*/
		
		//Validacao do Layout
		if (($local == 'passo5' || $local == 'configuracoes') && !validaNumero($campo['strLayout'])){
		    $validou            =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_LAYOUT'))), 'erro');;   
		}
		
		//Validacao da Liberacao do Conteudo
		if (($local == 'passo6' || $local == 'configuracoes') && !validaAlfabetico($campo['strLiberarConteudo'])){
		    $validou            =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_SELECT', array(texto('LIBERAR_DADOS_CONTEUDO'))), 'erro');;   
		}
		
		//Validacao do Liberacao do Curso
		if (($local == 'passo6' || $local == 'configuracoes') && !validaAlfabetico($campo['strLiberarCurso'])){
		    $validou            =    false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_SELECT', array(texto('LIBERAR_DADOS_MATRICULA_CURSO'))), 'erro');;   
		}
		
		//Validacao de Logo
		if (($local == 'passo1' || $local == 'ativarEdicao') && !validaFoto($campo['fileLogo']['name']) && $campo['fileLogo']['name'] !=''){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_TIPO_LOGO'), 'erro');
		}
		else{
			if (($local == 'passo1' || $local == 'ativarEdicao') && $campo['fileLogo']['name'] != ''){
				if ($campo['fileLogo']['size']/1024	>	constant('__TAM_LOGO_CURSO__')){
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_TAMANHO_LOGO', 'erro'));	
				}
				else {
					/*
					 * Verifica se o Logo validou, mas houve algum outro erro de validacao.
					 * Seta uma mensagem pedindo ao usuario que reenvie o logo, pois o mesmo nao e salvo se houver um erro.
					 */
					if(!$validou){
						adicionaMensagem(texto('MENSAGEM_VALIDACAO_REENVIAR_LOGO'));	
					}
				}
			}
		}
		
		return    $validou;
	}
	
	public static function buscar($idCursos, $idDonos, $idArea, $idLayout, $strNome, $comLogo, $strUrl, $strNivel, $strDataInicioMatriculaInicio, $strDataInicioMatriculaFim, $strDataTerminoMatriculaInicio, $strDataTerminoMatriculaFim, $strDataInicioCursoInicio, $strDataInicioCursoFim, $strDataTerminoCursoInicio, $strDataTerminoCursoFim, $strDataCriacaoInicio, $strDataCriacaoFim, $liberado, $apagado, $vagasMinimo, $vagasMaximo, $publicoAlvo, $objetivos, $ementa, $orientacao, $cronograma, $exibirGlossario, $exibirLinks, $exibirBibliografia, $exibirAvisos, $exibirForum, $exibirEmail, $exibirChat, $exibirBlog, $nomeModulo, $comCodigoInscricao, $conteudoLivre, $paginaAtual = NULL, $resultadosPagina = NULL, $ordenacaoAtual = NULL, $ordemAtual = NULL) {
		if (Curso::validaBusca($idCursos, $idDonos, $idArea, $idLayout, $strNome, $comLogo, $strUrl, $strNivel, $strDataInicioMatriculaInicio, $strDataInicioMatriculaFim, $strDataTerminoMatriculaInicio, $strDataTerminoMatriculaFim, $strDataInicioCursoInicio, $strDataInicioCursoFim, $strDataTerminoCursoInicio, $strDataTerminoCursoFim, $strDataCriacaoInicio, $strDataCriacaoFim, $liberado, $apagado, $vagasMinimo, $vagasMaximo, $publicoAlvo, $objetivos, $ementa, $orientacao, $cronograma, $exibirGlossario, $exibirLinks, $exibirBibliografia, $exibirAvisos, $exibirForum, $exibirEmail, $exibirChat, $exibirBlog, $nomeModulo, $comCodigoInscricao, $conteudoLivre)) {
			//PREPARANDO QUERY INICIAL
			$strQuery	=	"SELECT cursos.idCurso, cursos.idDono, cursos.logo, cursos.nome, cursos.urlCurso, cursos.dataCriacao, cursos.inicioMatricula, cursos.terminoMatricula, cursos.inicioCurso, cursos.terminoCurso, cursos.liberado, cursos.apagado, cursos.conteudoLivre FROM cursos ";
			$strQuery	.=	"WHERE ";
			
			//ADICIONANDO INTERVALOS DE DATAS (SE HOUVEREM) NA QUERY
			$strQuery	.=	$strDataInicioMatriculaInicio != null	?	'cursos.inicioMatricula >= "' . $strDataInicioMatriculaInicio . ' 0:0:0" AND ' : '';
			$strQuery	.=	$strDataInicioMatriculaFim != null		?	'cursos.inicioMatricula <= "' . $strDataInicioMatriculaFim . ' 23:59:59" AND ' : '';
			$strQuery	.=	$strDataTerminoMatriculaInicio != null	?	'cursos.terminoMatricula >= "' . $strDataTerminoMatriculaInicio . '" AND ' : '';
			$strQuery	.=	$strDataTerminoMatriculaFim != null		?	'cursos.terminoMatricula <= "' . $strDataTerminoMatriculaFim . '" AND ' : '';
			$strQuery	.=	$strDataInicioCursoInicio != null		?	'cursos.inicioCurso >= "' . $strDataInicioCursoInicio . '" AND ' : '';
			$strQuery	.=	$strDataInicioCursoFim != null			?	'cursos.inicioCurso <= "' . $strDataInicioCursoFim . '" AND ' : '';
			$strQuery	.=	$strDataTerminoCursoInicio != null		?	'cursos.terminoCurso >= "' . $strDataTerminoCursoInicio . '" AND ' : '';
			$strQuery	.=	$strDataTerminoCursoFim != null			?	'cursos.terminoCurso <= "' . $strDataTerminoCursoFim . '" AND ' : '';
			$strQuery	.=	$strDataCriacaoInicio != null			?	'cursos.dataCriacao >= "' . $strDataCriacaoInicio . '" AND ' : '';
			$strQuery	.=	$strDataCriacaoFim != null				?	'cursos.dataCriacao <= "' . $strDataCriacaoFim . '" AND ' : '';
			
			//ADICIONANDO BOOLEANOS (SE HOUVEREM) NA QUERY
			if ($comLogo == 'sim')
				$strQuery .= 'cursos.logo != "" AND ';
			else
				if ($comLogo == 'nao')
					$strQuery .= 'cursos.logo IS NULL AND ';
			
			if ($liberado == 'sim')
				$strQuery .= 'cursos.liberado = 1 AND ';
			else
				if ($liberado == 'nao')
					$strQuery .= 'cursos.liberado = 0 AND ';
			
			if ($apagado == 'sim')
				$strQuery .= 'cursos.apagado = 1 AND ';
			else
				if ($apagado == 'nao')
					$strQuery .= 'cursos.apagado = 0 AND ';
			
			if ($exibirGlossario == 'sim')
				$strQuery .= 'cursos.exibirGlossario = TRUE AND ';
			else
				if ($exibirGlossario == 'nao')
					$strQuery .= 'cursos.exibirGlossario = FALSE AND ';
			
			if ($exibirLinks == 'sim')
				$strQuery .= 'cursos.exibirLinks = TRUE AND ';
			else
				if ($exibirLinks == 'nao')
					$strQuery .= 'cursos.exibirLinks = FALSE AND ';
					
			if ($exibirBibliografia == 'sim')
				$strQuery .= 'cursos.exibirBibliografia = TRUE AND ';
			else
				if ($exibirLinks == 'nao')
					$strQuery .= 'cursos.exibirBibliografia = FALSE AND ';
			
			if ($exibirAvisos == 'sim')
				$strQuery .= 'cursos.exibirAvisos = TRUE AND ';
			else
				if ($exibirAvisos == 'nao')
					$strQuery .= 'cursos.exibirAvisos = FALSE AND ';
			
			if ($exibirForum == 'sim')
				$strQuery .= 'cursos.exibirForum = TRUE AND ';
			else
				if ($exibirForum == 'nao')
					$strQuery .= 'cursos.exibirForum = FALSE AND ';
			
			if ($exibirEmail == 'sim')
				$strQuery .= 'cursos.exibirEmail = TRUE AND ';
			else
				if ($exibirEmail == 'nao')
					$strQuery .= 'cursos.exibirEmail = FALSE AND ';
			
			if ($exibirChat == 'sim')
				$strQuery .= 'cursos.exibirChat = TRUE AND ';
			else
				if ($exibirChat == 'nao')
					$strQuery .= 'cursos.exibirChat = FALSE AND ';
			
			if ($exibirBlog == 'sim')
				$strQuery .= 'cursos.exibirBlog = TRUE AND ';
			else
				if ($exibirBlog == 'nao')
					$strQuery .= 'cursos.exibirBlog = FALSE AND ';
			
			if ($comCodigoInscricao == 'sim')
				$strQuery .= 'cursos.codigoInscricao != NULL AND ';
			else
				if ($comCodigoInscricao == 'nao')
					$strQuery .= 'cursos.codigoInscricao IS NULL AND ';
			
			if ($conteudoLivre == 'sim') {
				$strQuery .= 'cursos.conteudoLivre = "Sim" AND ';
			}
			else {
				if ($conteudoLivre == 'nao') {
					$strQuery .= 'cursos.conteudoLivre = "Não" AND ';
				}
				else {
					if ($conteudoLivre == 'apos') {
						$strQuery .= 'cursos.conteudoLivre = "Após" AND ';
					}
				}
			}
			
			//ADICIONANDO INTERVALOS
			$strQuery	.=	$vagasMinimo != null		?	'cursos.vagas >= ' . $vagasMinimo . ' AND ' : '';
			$strQuery	.=	$vagasMaximo != null		?	'cursos.vagas <= ' . $vagasMaximo . ' AND ' : '';
			
			//ADICIONANDO VALORES FIXOS (SE HOUVEREM) NA QUERY
			$idCurso	=	"";
			if (is_array($idCursos)) {
				foreach ($idCursos as $id) {
					$idCurso	.=	$id . ", ";
				}
				$idCurso	=	preg_replace('/, $/', '', $idCurso);
			}
			else
				$idCurso	=	$idCursos;
			
			$idDono	=	"";
			if (is_array($idDonos)) {
				foreach ($idDonos as $id) {
					$idDono	.=	$id . ", ";
				}
				$idDono	=	preg_replace('/, $/', '', $idDono);
			}
			else {
				$idDono	=	$idDonos;
			}
			
			$strQuery	.=	$idCurso != null		?	'cursos.idCurso IN (' . $idCurso . ') AND ' : '';
			$strQuery	.=	$idDono != null			?	'cursos.idDono IN (' . $idDono . ') AND ' : '';
			$strQuery	.=	$idArea != null			?	'cursos.idArea = ' . $idArea . ' AND ' : '';
			$strQuery	.=	$idLayout != null		?	'cursos.idLayout = ' . $idLayout . ' AND ' : '';
	
			//ADICIONANDO EXPRESSOES REGULARES (SE HOUVEREM) NA QUERY
			$strQuery		.=	$strNome != null ? configuraRegexpStringBusca(codificaStringBusca($strNome), 'cursos.nome') : '';
			$strQuery		.=	$strUrl != null ? configuraRegexpStringBusca($strUrl, 'cursos.urlCurso') : '';
			$strQuery		.=	$strNivel != null ? configuraRegexpStringBusca(codificaStringBusca($strNivel), 'cursos.nivel') : '';
			$strQuery		.=	$publicoAlvo != null ? configuraRegexpStringBusca(codificaStringBusca($publicoAlvo), 'cursos.publicoAlvo') : '';
			$strQuery		.=	$objetivos != null ? configuraRegexpStringBusca(codificaStringBusca($objetivos), 'cursos.objetivos') : '';
			$strQuery		.=	$ementa != null ? configuraRegexpStringBusca(codificaStringBusca($ementa), 'cursos.ementa') : '';
			$strQuery		.=	$orientacao != null ? configuraRegexpStringBusca(codificaStringBusca($orientacao), 'cursos.orientacao') : '';
			$strQuery		.=	$cronograma != null ? configuraRegexpStringBusca(codificaStringBusca($cronograma), 'cursos.cronograma') : '';
			$strQuery		.=	$nomeModulo != null ? configuraRegexpStringBusca(codificaStringBusca($nomeModulo), 'cursos.nomeModulo') : '';
			
			//CONSERTANDO FINAL DA QUERY
			$strQuery	=	preg_replace('/ WHERE $/', ' ', $strQuery);
			$strQuery	=	preg_replace('/ AND $/', ' ', $strQuery);
			
			$strQueryCount	=	"SELECT COUNT(*) AS qtdResultados FROM (" . $strQuery . ") AS queryOriginal;";
			
			$resultadoCount	=	BancoDados::query($strQueryCount);
			if (is_array($resultadoCount)) {
				foreach ($resultadoCount as $resultado) {
					$qtdResultados	=	$resultado['qtdResultados'];
				}
				
				if ($qtdResultados > 0) {
					$paginaAtual	=	$paginaAtual == NULL ? 1 : $paginaAtual;
					$ordenacaoAtual	=	$ordenacaoAtual == NULL ? 'nome' : $ordenacaoAtual;
					$ordemAtual		=	$ordemAtual == NULL ? 'ASC' : ($ordemAtual == 'desc' ? 'DESC' : 'ASC');
					
					$strQuery	.=	' ORDER BY ' . $ordenacaoAtual . ' ' . $ordemAtual;
					
					if ($resultadosPagina != NULL) {
						$qtdPaginas		=	ceil($qtdResultados / $resultadosPagina);
						$qtdPaginas		=	$qtdPaginas == 0 ? 1 : $qtdPaginas;
						
						$strQuery		.=	' LIMIT ' . $resultadosPagina . ' OFFSET ' . (($paginaAtual - 1) * $resultadosPagina);
					}
					else {
						$qtdPaginas	=	1;
					}
					
					$strQuery	.=	';';
					
					$resultado	=	BancoDados::query($strQuery);
					
					if (is_array($resultado)) {
						return array ('listaResultados' => $resultado, 'qtdResultadosTotal' => $qtdResultados, 'qtdPaginas' => $qtdPaginas);
					}
					else {
						return false;
					}
				}
				else {
					return array ('listaResultados' => array(), 'qtdResultadosTotal' => $qtdResultados, 'qtdPaginas' => 0);
				}
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
	
	public static function validaBusca($idCursos, $idDono, $idArea, $idLayout, $strTitulo, $comLogo, $strUrl, $strNivel, $strDataInicioMatriculaInicio, $strDataInicioMatriculaFim, $strDataTerminoMatriculaInicio, $strDataTerminoMatriculaFim, $strDataInicioCursoInicio, $strDataInicioCursoFim, $strDataTerminoCursoInicio, $strDataTerminoCursoFim, $strDataCriacaoInicio, $strDataCriacaoFim, $liberado, $apagado, $vagasMinimo, $vagasMaximo, $publicoAlvo, $objetivos, $ementa, $orientacao, $cronograma, $exibirGlossario, $exibirLinks, $exibirBibliografia, $exibirAvisos, $exibirForum, $exibirEmail, $exibirChat, $exibirBlog, $nomeModulo, $comCodigoInscricao, $conteudoLivre) {
		//TODO Validar a busca
		return true;
	}
	
	public static function buscarNome($strNome, $liberado = NULL, $apagado = NULL, $paginaAtual = NULL, $resultadosPagina = NULL, $ordenacaoAtual = NULL, $ordemAtual = NULL) {
		return Curso::buscar(null, null, null, null, $strNome, null, null, null, null, null, null, null, null, null, null, null, null, null, $liberado, $apagado, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, $paginaAtual, $resultadosPagina, $ordenacaoAtual, $ordemAtual);
	}
	
	public static function buscarPorId($IdCursos) {
		return Curso::buscar($IdCursos, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
	}
	
	public static function getMeusCursos($cursos, $idUsuario, $status, $paginaAtual = NULL, $resultadosPagina = NULL, $ordenacaoAtual = NULL, $ordemAtual = NULL) {
		$idCursos	=	"";
		$idCurso	=	"";
		foreach($cursos as $idCurso => $participacao) {
			$idCursos	.=	$idCurso . ", ";
		}
		
		$idCursos	=	preg_replace('/, $/', '', $idCursos);
		
		if ($idCurso	==	"" || !($status == 'andamento' || $status == 'desenvolvimento' || $status == 'concluidos' )) {
			return array ('listaResultados' => array(), 'qtdResultadosTotal' => 0, 'qtdPaginas' => 0);
		}
		
		$strQuery	=	"SELECT *, COUNT(*) AS qtdTurmas FROM (SELECT cursos.idCurso AS idCurso, cursos.idDono as idDono, cursos.logo AS logo, cursos.nome AS nome, cursos.urlCurso AS urlCurso, cursos.inicioCurso AS inicioCurso, cursos.terminoCurso AS terminoCurso, cursos.liberado AS liberado, turmas.nome AS turma, cursosAlunos.ultimoAcesso AS ultimoAcesso, cursosAlunos.funcaoUsuario AS funcao FROM cursos INNER JOIN turmas ON turmas.idCurso = cursos.idCurso INNER JOIN cursosAlunos ON cursos.idCurso = cursosAlunos.idCurso INNER JOIN grupos ON (grupos.idGrupo = cursosAlunos.idGrupo AND turmas.idTurma = grupos.idTurma) OR ISNULL(cursosAlunos.idGrupo) WHERE cursosAlunos.idUsuario = " . $idUsuario . " AND cursos.idCurso IN (" . $idCursos . ") UNION SELECT cursos.idCurso AS idCurso, cursos.idDono, cursos.logo AS logo, cursos.nome AS nome, cursos.urlCurso AS urlCurso, cursos.inicioCurso AS inicioCurso, cursos.terminoCurso AS terminoCurso, cursos.liberado AS liberado, turmas.nome AS turma, turmasProfessores.ultimoAcesso AS ultimoAcesso, 'Professor' AS funcao FROM cursos INNER JOIN turmas ON cursos.idCurso = turmas.idCurso INNER JOIN turmasProfessores ON turmas.idTurma = turmasProfessores.idTurma WHERE turmasProfessores.idUsuario = " . $idUsuario . " AND cursos.idCurso IN (" . $idCursos . ")) AS infoCursos WHERE ";
		
		switch ($status) {
			case 'andamento':
				$strDataInicioCursoFim		=	date('Y-m-d', time());
				$strDataTerminoCursoInicio	=	date('Y-m-d', time());
				$liberado					=	'true';
				$strQuery	.=	"inicioCurso <= '" . $strDataInicioCursoFim . " 23:59:59' AND terminoCurso >= '" . $strDataTerminoCursoInicio . " 0:0:0' AND liberado = " . $liberado . " ";
				break;
			case 'desenvolvimento':
				$strQuery	=	"SELECT *, COUNT(*) AS qtdTurmas FROM (SELECT cursos.idCurso AS idCurso, cursos.logo AS logo, cursos.nome AS nome, cursos.urlCurso AS urlCurso, cursos.inicioCurso AS inicioCurso, cursos.terminoCurso AS terminoCurso, cursos.liberado AS liberado, turmas.nome AS turma, turmasProfessores.ultimoAcesso AS ultimoAcesso, 'Professor' AS funcao FROM cursos INNER JOIN turmas ON cursos.idCurso = turmas.idCurso INNER JOIN turmasProfessores ON turmas.idTurma = turmasProfessores.idTurma WHERE turmasProfessores.idUsuario = " . $idUsuario . " AND cursos.idCurso IN (" . $idCursos . ")) AS infoCursos WHERE ";
				$strDataInicioCursoInicio	=	date('Y-m-', time()) . (date('d', time()) +1);
				$liberado					=	'false';
				$strQuery	.=	"inicioCurso >= '" . $strDataInicioCursoInicio . " 0:0:0' OR  liberado = " . $liberado . " ";
				break;
			case 'concluidos':
				$strDataTerminoCursoFim		=	date('Y-m-', time()) . (date('d', time()) -1);
				$liberado					=	'true';
				$strQuery	.=	"terminoCurso <= '" . $strDataTerminoCursoFim . " 23:59:59' AND liberado = " . $liberado . " ";
				break;
		}
		$strQueryCount	=	"SELECT COUNT(*) AS qtdResultados FROM (" . $strQuery . " GROUP BY idCurso) AS queryOriginal;";
		$resultadoCount	=	BancoDados::query($strQueryCount);
		if (is_array($resultadoCount)) {
			foreach ($resultadoCount as $resultado) {
				$qtdResultados	=	$resultado['qtdResultados'];
			}
			
			if ($qtdResultados > 0) {
				$paginaAtual	=	$paginaAtual == NULL ? 1 : $paginaAtual;
				$ordenacaoAtual	=	$ordenacaoAtual == NULL ? 'nome' : $ordenacaoAtual;
				$ordemAtual		=	$ordemAtual == NULL ? 'ASC' : ($ordemAtual == 'desc' ? 'DESC' : 'ASC');
				
				$strQuery	.=	' GROUP BY idCurso ORDER BY ' . $ordenacaoAtual . ' ' . $ordemAtual;
				
				if ($resultadosPagina != NULL) {
					$qtdPaginas		=	ceil($qtdResultados / $resultadosPagina);
					$qtdPaginas		=	$qtdPaginas == 0 ? 1 : $qtdPaginas;
					
					$strQuery		.=	' LIMIT ' . $resultadosPagina . ' OFFSET ' . (($paginaAtual - 1) * $resultadosPagina);
				}
				else {
					$qtdPaginas	=	1;
				}
				
				$strQuery	.=	';';
				$resultado	=	BancoDados::query($strQuery);
				
				if (is_array($resultado)) {
					return array ('listaResultados' => $resultado, 'qtdResultadosTotal' => $qtdResultados, 'qtdPaginas' => $qtdPaginas);
				}
				else {
					return false;
				}
			}
			else {
				return array ('listaResultados' => array(), 'qtdResultadosTotal' => $qtdResultados, 'qtdPaginas' => 0);
			}
		}
		else {
			return false;
		}						
	}
	
	public function permissaoAcesso($idUsuario, $funcao) {
		//TODO validar acesso
		return true;
	}
	
	/**
	 * Pega todos os participantes do curso e os retorna separados numa matriz multi-dimensional
	 * por 'categoria'(aluno, tutor, professor), 'turma à qual pertencem', 'grupo à qual pertencem'.
	 * 
	 * @deprecated Como não está sendo usado grupos dessa forma e muito menos turmas, criei a função abaixo
	 * que faz quase a mesma coisa mas retorna num formato muito mais simples.
	 * 
	 * Só deixei essa função pois já está sendo utilizada em outras partes do sistema e remove-la iria causar problemas.
	 */
	public function getParticipantes() {
		//Pegando alunos e tutores do curso
		$strQuery	=	"SELECT usuarios.idUsuario, usuarios.foto, usuarios.nome, usuarios.email, cursosAlunos.funcaoUsuario, cursosAlunos.autorizado, cursosAlunos.receberEmail, cursosAlunos.ultimoAcesso, cursosAlunos.dataInscricao as dataInscricaoCurso, cursosAlunos.idGrupo, cursosAlunos.idTutor ";
		$strQuery	.=	"FROM usuarios INNER JOIN cursosAlunos ON usuarios.idUsuario = cursosAlunos.idUsuario ";
		$strQuery	.=	"LEFT JOIN grupos ON cursosAlunos.idGrupo = grupos.idGrupo ";
		$strQuery	.=	"WHERE cursosAlunos.idCurso = " . $this->getIdCurso() . " ";
		if (is_array($resultadoAlunosTutores = BancoDados::query($strQuery))) {
			$arrayParticipantes['alunosPendentes']	=	array();
			$arrayParticipantes['alunos']			=	array();
			$arrayParticipantes['tutores']			=	array();
			$arrayParticipantes['professores']		=	array();
			$indiceAlunos		=	0;
			$indiceTutores		=	0;
			$indiceProfessores	=	0;
			
			foreach ($resultadoAlunosTutores as $dadosParticipante) {
				if ($dadosParticipante['funcaoUsuario'] == 'Aluno') {
					if ($dadosParticipante['autorizado'] == 1) {
						$arrayParticipantes['alunos']['turma' . $dadosParticipante['idTurma']]['grupo' . $dadosParticipante['idGrupo']][$indiceAlunos]	=	$dadosParticipante;
						$indiceAlunos++;
					}
					else {
						array_push($arrayParticipantes['alunosPendentes'], $dadosParticipante);
					}
				}
				else {
					$arrayParticipantes['tutores']['turma' . $dadosParticipante['idTurma']]['grupo' . $dadosParticipante['idGrupo']][$indiceTutores]	=	$dadosParticipante;
					$indiceTutores++;
				}
			}
			
			//Pegando professores do curso
			$strQuery	=	"SELECT usuarios.idUsuario, usuarios.foto, usuarios.nome, usuarios.email, turmasProfessores.idTurma, turmasProfessores.ultimoAcesso, turmasProfessores.dataInscricao as dataInscricaoCurso ";
			$strQuery	.=	"FROM usuarios INNER JOIN turmasProfessores ON usuarios.idUsuario = turmasProfessores.idUsuario INNER JOIN turmas ON turmasProfessores.idTurma = turmas.idTurma ";
			$strQuery	.=	"WHERE turmas.idCurso = " . $this->getIdCurso();
			
			if (is_array($resultadoProfessores = BancoDados::query($strQuery))) {
				foreach ($resultadoProfessores as $dadosParticipante) {
					$arrayParticipantes['professores']['turma' . $dadosParticipante['idTurma']][$indiceProfessores]	=	$dadosParticipante;
					$indiceProfessores++;
				}
				return $arrayParticipantes;
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
	
	
	/**
	 * Função criada por Rodrigo Werneck que pega os alunos e tutores do curso 
	 * e os retorna numa estrutura muito mais simples doque a da função acima.
	 */
	public function getAlunos(){
		//Pegando alunos e tutores do curso
			$strQuery	=	"	SELECT usuarios.idUsuario, usuarios.foto, usuarios.nome, usuarios.email, cursosAlunos.funcaoUsuario, cursosAlunos.autorizado, cursosAlunos.receberEmail, cursosAlunos.ultimoAcesso, cursosAlunos.dataInscricao as dataInscricaoCurso, cursosAlunos.idGrupo, cursosAlunos.idTutor 
								FROM usuarios INNER JOIN cursosAlunos ON usuarios.idUsuario = cursosAlunos.idUsuario 
								WHERE cursosAlunos.idCurso = " . $this->getIdCurso() . " ";
		if (is_array($resultadoAlunosETutores = BancoDados::query($strQuery))) {
			$arrayParticipantes['alunosPendentes']	=	array();
			$arrayParticipantes['alunos']			=	array();
			$arrayParticipantes['tutores']			=	array();
			
			foreach ($resultadoAlunosETutores as $dadosParticipante) {
				if ($dadosParticipante['funcaoUsuario'] == 'Aluno') {
					if ($dadosParticipante['autorizado'] == 1) {
						array_push($arrayParticipantes['alunos'],$dadosParticipante);
					}
					else {
						array_push($arrayParticipantes['alunosPendentes'], $dadosParticipante);
					}
				}
				else {
					$arrayParticipantes['tutores']['turma' . $dadosParticipante['idTurma']]['grupo' . $dadosParticipante['idGrupo']][$indiceTutores]	=	$dadosParticipante;
				}
				return $arrayParticipantes;
			}
		}
		else {
			return false;
		}
	}
	
	public function enviaEmailParticipantes($idNaoEnviar, $strAssunto, $strTitulo, $corpoEmail, $funcao = 'Todos') {
		$arrayParticipantes	=	$this->getParticipantes();
		$enderecosEmail	=	'';
		if ($funcao == 'Alunos' || $funcao == 'Todos') {
			foreach ($arrayParticipantes['alunos'] as $turma) {
				foreach ($turma	as $grupo) {
					foreach ($grupo as $dadosAluno) {
						$enderecosEmail	.= $dadosAluno['idUsuario'] == $idNaoEnviar || $dadosAluno['receberEmail'] == 0 ?	'' :	$dadosAluno['email'] . ',';
					}
				}
			}
		}
		
		if ($funcao == 'Tutores' || $funcao == 'Todos') {
			foreach ($arrayParticipantes['tutores'] as $turma) {
				foreach ($turma	as $grupo) {
					foreach ($grupo as $dadosTutor) {
						$enderecosEmail	.=	$dadosTutor['idUsuario'] == $idNaoEnviar || $dadosTutor['receberEmail'] == 0 ?	'' :	$dadosTutor['email'] . ',';
					}
				}
			}
		}
		
		if ($funcao == 'Professores' || $funcao == 'Todos') {
			foreach ($arrayParticipantes['professores'] as $turma) {
				foreach ($turma as $dadosProfessor) {
					$enderecosEmail	.=	$dadosProfessor['idUsuario'] == $idNaoEnviar ?	'' :	$dadosProfessor['email'] . ',';
				}
			}
		}
		
		if ($enderecosEmail != '') {
			$enderecosEmail	=	preg_replace('/,$/', '', $enderecosEmail);
			email($enderecosEmail, $strAssunto, $strTitulo, $corpoEmail);
			return true;
		}
		else {
			return true;
		}
	}
	
	/**
     * Returns $tutores.
     * @see Curso::$tutores
     */
	public function getTutoresOrdenados(){
		$tutoresOrdenados	=	$this->tutores;
		if (sizeof($tutoresOrdenados) > 0) {
			foreach ($tutoresOrdenados as $key => $row) {
			    $nome[$key]  = $row['nome'];
			    $linkPerfil[$key] = $row['linkPerfil'];
			}
			array_multisort($nome, SORT_ASC, $linkPerfil, SORT_ASC, $tutoresOrdenados);
			return $tutoresOrdenados;
		}
	}
	
	/**
     * Returns $tutores.
     * @see Curso::$tutores
     */
	public function getTutores(){
		return $this->tutores;
	}
	
	 /**
     * Sets $tutores.
     * @param object $tutores
     * @see Curso::$tutores
     */
	public function setTutores(){
		$strQuery	=	"SELECT idUsuario, exibirEmail FROM cursosAlunos WHERE idCurso = " . $this->getIdCurso() . " AND funcaoUsuario = 'Tutor';";
		if (!is_array($resultado = BancoDados::query($strQuery)) || sizeof($resultado) <= 0){
			$this->tutores	=	array();
		}
		else {
			$idUsuarios	=	array();
			for($i = 0; $i < sizeof($resultado); $i++) {
				array_push($idUsuarios,$resultado[$i]['idUsuario']);
				$this->tutores[$resultado[$i]['idUsuario']]['exibirEmail']	=	$resultado[$i]['exibirEmail'];
			}
			$resultado	=	Usuario::buscar($idUsuarios, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
			if (sizeof($resultado['listaResultados']) > 0) {
				foreach($resultado['listaResultados'] as $tutor) {
					$this->tutores[$tutor['idUsuario']]['nome']	=	nomeSobrenome($tutor['nome']);
					$this->tutores[$tutor['idUsuario']]['linkPerfil']	=	montaLink(array("usuario", $tutor['idUsuario']));	
				}
			}
			else {
				$this->tutores	=	array();
			}
		}
	}
	
	public function getModulosVisiveis() {
		if (is_array($resultado	=	$this->getModulos())) {
			$modulosVisiveis	=	array();
			foreach($resultado['listaResultados'] as $modulo) {
				$this->modulos[$modulo['ordem']]['titulo']		=	$modulo['titulo'];
				$this->modulos[$modulo['ordem']]['idModulo']	=	$modulo['idModulo'];
				$this->modulos[$modulo['ordem']]['visivel']		=	$modulo['visivel'];
				if ($modulo['visivel']) {
					array_push($modulosVisiveis, $modulo['ordem']);
				}
			}
			return $modulosVisiveis;
		}
		else {
			return false;
		}
	}
	
	public function setModulosVisiveis($modulosVisiveis) {
		$this->modulosVisiveis	=	$modulosVisiveis;
	}
	
	public function setModulos() {
		$resultado	=	Modulo::buscar($this->getIdCurso());
		$modulosVisiveis	=	array();
		if (sizeof($resultado['listaResultados']) > 0 ) {
			foreach($resultado['listaResultados'] as $modulo) {
				$this->modulos[$modulo['ordem']]['titulo']		=	$modulo['titulo'];
				$this->modulos[$modulo['ordem']]['idModulo']	=	$modulo['idModulo'];
				$this->modulos[$modulo['ordem']]['visivel']		=	$modulo['visivel'];
				if ($modulo['visivel']) {
					array_push($modulosVisiveis, $modulo['ordem']);
				}
			}
			$this->setModulosVisiveis($modulosVisiveis);
		}
		else {
			$this->modulos	=	array();
		}
	}
	
	public function getAtividades() {
		return $this->atividades;
	}
	
	public function setAtividades() {
		$this->atividades = Atividade::getListaParaCurso($this->getIdCurso());		
	}
	
	public function inscreverUsuario ($idUsuario, $idTutor = null, $idGrupo = null, $funcaoUsuario = 'Aluno', $exibirEmail = false, $receberEmail = false, $autorizado = false) {
		if (is_numeric($idUsuario)) {
			$erro = false;
			
			if (is_null($idGrupo) || !is_numeric($idGrupo)) {
				$strQuery	=	"SELECT grupos.idGrupo FROM grupos INNER JOIN turmas ON grupos.idTurma = turmas.idTurma WHERE turmas.idCurso = " . $this->getIdCurso() . " ORDER BY grupos.idGrupo ASC LIMIT 1";
				
				if (is_array($resultado = BancoDados::query($strQuery))) {
					if (sizeof($resultado) > 0) {
						$idGrupo = $resultado[0]['idGrupo'];
					}
					else {
						$erro = true;
					}
				}
				else {
					$erro = true;
				}
			}
			
			$strQuery	=	"INSERT INTO cursosAlunos VALUES (";
			$strQuery	.=	$idUsuario . ", ";
			$strQuery	.=	$this->getIdCurso() . ", ";
			$strQuery	.=	$idTutor == null ? "NULL, " : $idTutor . ", "; //idTutor
			$strQuery	.=	$idGrupo . ", "; //idGrupo
			$strQuery	.=	"\"Aluno\", "; //funcaoUsuario
			$strQuery	.=	$autorizado ? "1, " : "0, "; //autorizado
			$strQuery	.=	"NOW(), "; //dataInscricao
			$strQuery	.=	"NOW(), "; //ultimoAcesso
			$strQuery	.=	$exibirEmail ? "1, " : "0, "; //exibirEmail
			$strQuery	.=	$receberEmail ? "1)" : "0)"; //receberEmail
			
			if (BancoDados::query($strQuery)) {
				return true;
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
	
	public function desinscreverUsuario ($idUsuario) {
		if (is_numeric($idUsuario)) {
			$strQuery	=	"DELETE FROM cursosAlunos WHERE idUsuario = " . $idUsuario . " AND idCurso = " . $this->getIdCurso();
			
			if (BancoDados::query($strQuery)) {
				return true;
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
	
	public function getItensInseridos() {
		//TODO Pegar todas as coisas que podem existir no curso
		$numeroItensInseridos	=	0;
		
		$arrayResultadoAtividades		=	$this->getAtividades();
		$numeroItensInseridos			+=	count($arrayResultadoAtividades);
		$arrayItensInseridos[texto('AREA_ATIVIDADES')]	=	$arrayResultadoAtividades == null ? null : $arrayResultadoAtividades;

		$arrayResultadoForuns			=	$this->getForuns();
		$numeroItensInseridos			+=	count($arrayResultadoForuns);
		$arrayItensInseridos[texto('AREA_FORUM')]	=	$arrayResultadoForuns;
		
		$arrayResultadoAvisos			=	$this->getAvisos(null, null, 'titulo', 'asc');
		$numeroItensInseridos			+=	$arrayResultadoAvisos['qtdResultadosTotal'];
		$arrayItensInseridos[texto('AREA_AVISOS')]	=	$arrayResultadoAvisos['listaResultados'];
		
		$arrayResultadoBibliografias			=	$this->getBibliografias(null, null, 'item', 'asc');
		$numeroItensInseridos					+=	$arrayResultadoBibliografias['qtdResultadosTotal'];
		$arrayItensInseridos[texto('AREA_BIBLIOGRAFIA')]	=	$arrayResultadoBibliografias['listaResultados'];
		
		$arrayResultadoGlossarios			=	$this->getGlossarios(null, null, 'termo', 'asc');
		$numeroItensInseridos				+=	$arrayResultadoGlossarios['qtdResultadosTotal'];
		$arrayItensInseridos[texto('AREA_GLOSSARIO')]	=	$arrayResultadoGlossarios['listaResultados'];
		
		$arrayResultadoLinks			=	$this->getLinks(null, null, 'titulo', 'asc');
		$numeroItensInseridos			+=	$arrayResultadoLinks['qtdResultadosTotal'];
		$arrayItensInseridos[texto('AREA_LINKS')]	=	$arrayResultadoLinks['listaResultados'];
		
		$arrayResultadoRecursos				=	$this->getRecursos(null, null, 'titulo', 'asc');
		$numeroItensInseridos				+=	$arrayResultadoRecursos['qtdResultadosTotal'];
		//Criando o indice idItem, usado nas associacoes
		foreach($arrayResultadoRecursos['listaResultados'] as $chave => $recurso){
			$arrayResultadoRecursos['listaResultados'][$chave]['idItem']	=	$recurso['idRecurso']; 
		}
		$arrayItensInseridos[texto('AREA_RECURSOS')]	=	$arrayResultadoRecursos['listaResultados'];
		
		$arrayResultadoModulos				=	$this->getModulos(null, null, 'titulo', 'asc');
		$numeroItensInseridos				+=	$arrayResultadoModulos['qtdResultadosTotal'];
		//Criando o indice idItem, usado nas associacoes
		foreach($arrayResultadoModulos['listaResultados'] as $chave => $modulo){
			$arrayResultadoModulos['listaResultados'][$chave]['idItem']	=	$modulo['idModulo']; 
		}
		$arrayItensInseridos[$this->getNomeModulo()]	=	$arrayResultadoModulos['listaResultados'];
		
		foreach($arrayItensInseridos as $chaveItem => $valorItem){
			foreach($valorItem as $chaveTitulo => $valorTitulo){
				$arrayItensInseridos[$chaveItem][$chaveTitulo]['abrev'] = criaAbrev($valorTitulo['titulo']);
			}
		}
		
		$arrayItensInseridos['qtdResultadosTotal']	=	$numeroItensInseridos;
		
		return $arrayItensInseridos;
	}
	
	public function getForuns() {
		return Forum::getListaParaCurso($this->getIdCurso());
	}
	
	public function getAvisos($paginaAtual = null, $resultadosPagina = null, $ordenacaoAtual = null, $ordemAtual = null) {
		return Aviso::buscar(null, $this->getIdCurso(), null, null, null, null, null, $paginaAtual, $resultadosPagina, $ordenacaoAtual, $ordemAtual);
	}
	
	public function getBibliografias($paginaAtual = null, $resultadosPagina = null, $ordenacaoAtual = null, $ordemAtual = null) {
		return Bibliografia::buscar(null, $this->getIdCurso(), null, null, null, null, $paginaAtual, $resultadosPagina, $ordenacaoAtual, $ordemAtual);
	}
	
	public function getGlossarios($paginaAtual = null, $resultadosPagina = null, $ordenacaoAtual = null, $ordemAtual = null) {
		return Glossario::buscar(null, $this->getIdCurso(), null, null, null, null, null, $paginaAtual, $resultadosPagina, $ordenacaoAtual, $ordemAtual);
	}
	
	public function getLinks($paginaAtual = null, $resultadosPagina = null, $ordenacaoAtual = null, $ordemAtual = null) {
		return Link::buscar(null, $this->getIdCurso(), null, null, null, null, null, $paginaAtual, $resultadosPagina, $ordenacaoAtual, $ordemAtual);
	}
	
	public function getRecursos($paginaAtual = null, $resultadosPagina = null, $ordenacaoAtual = null, $ordemAtual = null) {
		return Recurso::getRecursosCurso($this->getIdCurso(), null, $paginaAtual, $resultadosPagina, $ordenacaoAtual, $ordemAtual);
	}
	
	public function getTiposRecursos() {
		$listaTipos	=	TipoRecurso::buscar(null, $this->getIdCurso(), true, false);
		return $listaTipos['listaResultados'];
	}
	
	public function getModulos($paginaAtual = null, $resultadosPagina = null, $ordenacaoAtual = null, $ordemAtual = null) {
		return Modulo::buscar($this->getIdCurso(), NULL, NULL, NULL, NULL, $ordenacaoAtual, $ordemAtual, $resultadosPagina, $paginaAtual);
	}
	
    /**
     * Returns $apagado.
     * @see Curso::$apagado
     */
    public function getApagado()
    {
        return $this->apagado;
    }
    
    /**
     * Sets $apagado.
     * @param object $apagado
     * @see Curso::$apagado
     */
    public function setApagado($apagado)
    {
        $this->apagado = $apagado;
    }
    
    /**
     * Returns $codigoInscricao.
     * @see Curso::$codigoInscricao
     */
    public function getCodigoInscricao()
    {
        return $this->codigoInscricao;
    }
    
    /**
     * Sets $codigoInscricao.
     * @param object $codigoInscricao
     * @see Curso::$codigoInscricao
     */
    public function setCodigoInscricao($codigoInscricao)
    {
        $this->codigoInscricao = $codigoInscricao;
    }
    
    /**
     * Returns $conteudoLivre.
     * @see Curso::$conteudoLivre
     */
    public function getConteudoLivre()
    {
        return $this->conteudoLivre;
    }
    
    /**
     * Sets $conteudoLivre.
     * @param object $conteudoLivre
     * @see Curso::$conteudoLivre
     */
    public function setConteudoLivre($conteudoLivre)
    {
        $this->conteudoLivre = $conteudoLivre;
    }
    
    /**
     * Returns $cronograma.
     * @see Curso::$cronograma
     */
    public function getCronograma()
    {
        return $this->cronograma;
    }
    
    /**
     * Sets $cronograma.
     * @param object $cronograma
     * @see Curso::$cronograma
     */
    public function setCronograma($cronograma)
    {
        $this->cronograma = $cronograma;
    }
    
    /**
     * Returns $dataCriacao.
     * @see Curso::$dataCriacao
     */
    public function getDataCriacao()
    {
        return $this->dataCriacao;
    }
    
    /**
     * Sets $dataCriacao.
     * @param object $dataCriacao
     * @see Curso::$dataCriacao
     */
    public function setDataCriacao($dataCriacao)
    {
        $this->dataCriacao = $dataCriacao;
    }
    
    /**
     * Returns $ementa.
     * @see Curso::$ementa
     */
    public function getEmenta()
    {
        return $this->ementa;
    }
    
    /**
     * Sets $ementa.
     * @param object $ementa
     * @see Curso::$ementa
     */
    public function setEmenta($ementa)
    {
        $this->ementa = $ementa;
    }
    
    /**
     * Returns $exibirAvisos.
     * @see Curso::$exibirAvisos
     */
    public function getExibirAvisos()
    {
        return $this->exibirAvisos;
    }
    
    /**
     * Sets $exibirAvisos.
     * @param object $exibirAvisos
     * @see Curso::$exibirAvisos
     */
    public function setExibirAvisos($exibirAvisos)
    {
        $this->exibirAvisos = $exibirAvisos;
    }
    
    /**
     * Returns $exibirBibliografia.
     * @see Curso::$exibirBibliografia
     */
    public function getExibirBibliografia()
    {
        return $this->exibirBibliografia;
    }
    
    /**
     * Sets $exibirBibliografia.
     * @param object $exibirBibliografia
     * @see Curso::$exibirBibliografia
     */
    public function setExibirBibliografia($exibirBibliografia)
    {
        $this->exibirBibliografia = $exibirBibliografia;
    }
    
    /**
     * Returns $exibirBlog.
     * @see Curso::$exibirBlog
     */
    public function getExibirBlog()
    {
        return $this->exibirBlog;
    }
    
    /**
     * Sets $exibirBlog.
     * @param object $exibirBlog
     * @see Curso::$exibirBlog
     */
    public function setExibirBlog($exibirBlog)
    {
        $this->exibirBlog = $exibirBlog;
    }
    
    /**
     * Returns $exibirChat.
     * @see Curso::$exibirChat
     */
    public function getExibirChat()
    {
        return $this->exibirChat;
    }
    
    /**
     * Sets $exibirChat.
     * @param object $exibirChat
     * @see Curso::$exibirChat
     */
    public function setExibirChat($exibirChat)
    {
        $this->exibirChat = $exibirChat;
    }
    
    /**
     * Returns $exibirEmail.
     * @see Curso::$exibirEmail
     */
    public function getExibirEmail()
    {
        return $this->exibirEmail;
    }
    
    /**
     * Sets $exibirEmail.
     * @param object $exibirEmail
     * @see Curso::$exibirEmail
     */
    public function setExibirEmail($exibirEmail)
    {
        $this->exibirEmail = $exibirEmail;
    }
    
    /**
     * Returns $exibirForum.
     * @see Curso::$exibirForum
     */
    public function getExibirForum()
    {
        return $this->exibirForum;
    }
    
    /**
     * Sets $exibirForum.
     * @param object $exibirForum
     * @see Curso::$exibirForum
     */
    public function setExibirForum($exibirForum)
    {
        $this->exibirForum = $exibirForum;
    }
    
    /**
     * Returns $exibirGlossario.
     * @see Curso::$exibirGlossario
     */
    public function getExibirGlossario()
    {
        return $this->exibirGlossario;
    }
    
    /**
     * Sets $exibirGlossario.
     * @param object $exibirGlossario
     * @see Curso::$exibirGlossario
     */
    public function setExibirGlossario($exibirGlossario)
    {
        $this->exibirGlossario = $exibirGlossario;
    }
    
    /**
     * Returns $exibirLinks.
     * @see Curso::$exibirLinks
     */
    public function getExibirLinks()
    {
        return $this->exibirLinks;
    }
    
    /**
     * Sets $exibirLinks.
     * @param object $exibirLinks
     * @see Curso::$exibirLinks
     */
    public function setExibirLinks($exibirLinks)
    {
        $this->exibirLinks = $exibirLinks;
    }
    
    /**
     * Returns $idAreaConhecimento.
     * @see Curso::$idAreaConhecimento
     */
    public function getIdAreaConhecimento()
    {
        return $this->idAreaConhecimento;
    }
    
    /**
     * Sets $idAreaConhecimento.
     * @param object $idAreaConhecimento
     * @see Curso::$idAreaConhecimento
     */
    public function setIdAreaConhecimento($idAreaConhecimento)
    {
        $this->idAreaConhecimento = $idAreaConhecimento;
    }
    
    /**
     * Returns $idCurso.
     * @see Curso::$idCurso
     */
    public function getIdCurso()
    {
		// echo "omg =O";
		// debug($this->idCurso);
		// die;
        return $this->idCurso;
    }
    
    /**
     * Sets $idCurso.
     * @param object $idCurso
     * @see Curso::$idCurso
     */
    public function setIdCurso($idCurso)
    {
        $this->idCurso = $idCurso;
    }
    
    /**
     * Returns $idDono.
     * @see Curso::$idDono
     */
    public function getIdDono()
    {
        return $this->idDono;
    }
    
    /**
     * Sets $idDono.
     * @param object $idDono
     * @see Curso::$idDono
     */
    public function setIdDono($idDono)
    {
        $this->idDono = $idDono;
    }
    
    /**
     * Returns $idLayout.
     * @see Curso::$idLayout
     */
    public function getIdLayout()
    {
        return $this->idLayout;
    }
    
    /**
     * Sets $idLayout.
     * @param object $idLayout
     * @see Curso::$idLayout
     */
    public function setIdLayout($idLayout)
    {
        $this->idLayout = $idLayout;
        $resultado	=	Layout::buscar($idLayout,NULL, NULL, NULL, NULL);
        $this->setLayoutString($resultado['listaResultados'][0]['arquivo']);
    }
    

    /**
     * Returns $layoutString.
     * @see Curso::$layoutString
     */
    public function getLayoutString()
    {
        return $this->layoutString;
    }
    
    /**
     * Sets $layoutString.
     * @param object $layoutString
     * @see Curso::$layoutString
     */
    public function setLayoutString($layoutString)
    {
        $this->layoutString = $layoutString;
    }
    
    /**
     * Returns $idNomenclaturaPadrao.
     * @see Curso::$idNomenclaturaPadrao
     */
    public function getIdNomenclaturaPadrao()
    {
        return $this->idNomenclaturaPadrao;
    }
    
    /**
     * Sets $idNomenclaturaPadrao.
     * @param object $idNomenclaturaPadrao
     * @see Curso::$idNomenclaturaPadrao
     */
    public function setIdNomenclaturaPadrao($idNomenclaturaPadrao)
    {
        $this->idNomenclaturaPadrao = $idNomenclaturaPadrao;
    }
    
    /**
     * Returns $dataInicioCurso.
     * @see Curso::$dataInicioCurso
     */
    public function getDataInicioCurso()
    {
        return $this->dataInicioCurso;
    }
    
    /**
     * Sets $dataInicioCurso.
     * @param object $dataInicioCurso
     * @see Curso::$dataInicioCurso
     */
    public function setDataInicioCurso($dataInicioCurso)
    {
        $this->dataInicioCurso = $dataInicioCurso;
    }
    
    /**
     * Returns $dataInicioMatricula.
     * @see Curso::$dataInicioMatricula
     */
    public function getDataInicioMatricula()
    {
        return $this->dataInicioMatricula;
    }
    
    /**
     * Sets $dataInicioMatricula.
     * @param object $dataInicioMatricula
     * @see Curso::$dataInicioMatricula
     */
    public function setDataInicioMatricula($dataInicioMatricula)
    {
        $this->dataInicioMatricula = $dataInicioMatricula;
    }
    
    /**
     * Returns $liberado.
     * @see Curso::$liberado
     */
    public function getLiberado()
    {
        return $this->liberado;
    }
    
    /**
     * Sets $liberado.
     * @param object $liberado
     * @see Curso::$liberado
     */
    public function setLiberado($liberado)
    {
        $this->liberado = $liberado;
    }
    
    /**
     * Returns $logo.
     * @see Usuario::$logo
     */
    public function getLogo($tamanho = 'medio')
    {
    	if ($tamanho == 'medio' || $tamanho == 'original' || $tamanho == 'pequeno')
        	return str_replace('original', $tamanho, $this->logo);
        else
        	return false;
    }
	
	/**
     * Returns $logo.
     * @see Usuario::$logo
     */
    public function getURLLogo($tamanho = 'medio')
    {
        return $this->getLogo($tamanho) != '' ? constant('__URL_LOGO_CURSO__') . $this->getLogo($tamanho) : constant('__URL_LOGO_CURSO__') . 'cursodefault_' . $tamanho . '.png';
    }
	
	/**
     * Returns $logo.
     * @see Usuario::$logo
     */
    public function getDimensoesLogo($tamanho = 'medio')
    {	
		$nomeLogo	=	$this->getLogo($tamanho) != '' ? $this->getLogo($tamanho) : 'cursodefault_' . $tamanho . '.png';
        return getimagesize(constant('__CAMINHO_LOGO_CURSO__') . $nomeLogo);
    }
	
	/**
     * Returns $logo.
     * @see Usuario::$logo
     */
    public function getDimensoesCompletasLogo($tamanho = 'medio')
    {	
		$dimensoes 	=	$this->getDimensoesLogo($tamanho);
		$largura	=	$dimensoes[0];
		$altura		=	$dimensoes[1];
		
		return ('width="' . $largura . '" height="' . $altura . '"');
	}
    
    /**
     * Sets $logo.
     * @param object $logo
     * @see Curso::$logo
     */
    public function setLogo($logo)
    {
        $this->logo = $logo;
    }
    
    /**
     * Returns $nivel.
     * @see Curso::$nivel
     */
    public function getNivel()
    {
        return $this->nivel;
    }
    
    /**
     * Sets $nivel.
     * @param object $nivel
     * @see Curso::$nivel
     */
    public function setNivel($nivel)
    {
        $this->nivel = $nivel;
    }
    
    /**
     * Returns $nome.
     * @see Curso::$nome
     */
    public function getNome()
    {
        return $this->nome;
    }
    
    /**
     * Sets $nome.
     * @param object $nome
     * @see Curso::$nome
     */
    public function setNome($nome)
    {
        $this->nome = $nome;
    }
    
    /**
     * Returns $nomeModulo.
     * @see Curso::$nomeModulo
     */
    public function getNomeModulo()
    {
        return $this->nomeModulo;
    }
    
    /**
     * Sets $nomeModulo.
     * @param object $nomeModulo
     * @see Curso::$nomeModulo
     */
    public function setNomeModulo($nomeModulo)
    {
        $this->nomeModulo = $nomeModulo;
    }
    
    /**
     * Returns $objetivos.
     * @see Curso::$objetivos
     */
    public function getObjetivos()
    {
        return $this->objetivos;
    }
    
    /**
     * Sets $objetivos.
     * @param object $objetivos
     * @see Curso::$objetivos
     */
    public function setObjetivos($objetivos)
    {
        $this->objetivos = $objetivos;
    }
    
    /**
     * Returns $orientacoes.
     * @see Curso::$orientacoes
     */
    public function getOrientacoes()
    {
        return $this->orientacoes;
    }
    
    /**
     * Sets $orientacoes.
     * @param object $orientacoes
     * @see Curso::$orientacoes
     */
    public function setOrientacoes($orientacoes)
    {
        $this->orientacoes = $orientacoes;
    }
    
    /**
     * Returns $professores.
     * @see Curso::$professores
     */
    public function getProfessores()
    {
    	$arrayProfessores	=	array();
    	$turmas	=	$this->getTurmas();
    	
    	foreach($turmas as $chave => $turma){
			$strQuery	=	"SELECT turmasProfessores.idUsuario as idProfessor, turmasProfessores.exibirEmailProfessor as exibirEmail, turmasProfessores.exibirEnderecoProfessor as exibirEndereco, turmasProfessores.exibirTelefoneProfessor as exibirTelefone, usuarios.nome as nome FROM turmasProfessores, usuarios WHERE turmasProfessores.idTurma=" . $chave . " AND turmasProfessores.idUsuario = usuarios.idUsuario;";

			if (is_array($professores	=	BancoDados::query($strQuery))){
				foreach ($professores as $professor) {
					$arrayProfessores[$professor['idProfessor']] =	 array('nome' => nomeSobrenome($professor['nome']), 'exibirEmail' => $professor['exibirEmail'], 'exibirEndereco' => $professor['exibirEndereco'], 'exibirTelefone' => $professor['exibirTelefone'], 'linkPerfil' => montaLink(array("usuario",$professor['idProfessor'])) );
				}
			}
    		else {
				return false;
			}			
		}
        return $arrayProfessores;
    }
    
    /**
     * Sets $professores.
     * @param object $professores
     * @see Curso::$professores
     */
//    public function setProfessores($professores)
//    {
//    	$this->professores	=	$professores;
//    }
    
    /**
     * Returns $publicoAlvo.
     * @see Curso::$publicoAlvo
     */
    public function getPublicoAlvo()
    {
        return $this->publicoAlvo;
    }
    
    /**
     * Sets $publicoAlvo.
     * @param object $publicoAlvo
     * @see Curso::$publicoAlvo
     */
    public function setPublicoAlvo($publicoAlvo)
    {
        $this->publicoAlvo = $publicoAlvo;
    }
    
    /**
     * Returns $dataTerminoCurso.
     * @see Curso::$dataTerminoCurso
     */
    public function getDataTerminoCurso()
    {
        return $this->dataTerminoCurso;
    }
    
    /**
     * Sets $dataTerminoCurso.
     * @param object $dataTerminoCurso
     * @see Curso::$dataTerminoCurso
     */
    public function setDataTerminoCurso($dataTerminoCurso)
    {
        $this->dataTerminoCurso = $dataTerminoCurso;
    }
    
    /**
     * Returns $dataTerminoMatricula.
     * @see Curso::$dataTerminoMatricula
     */
    public function getDataTerminoMatricula()
    {
        return $this->dataTerminoMatricula;
    }
    
    /**
     * Sets $dataTerminoMatricula.
     * @param object $dataTerminoMatricula
     * @see Curso::$dataTerminoMatricula
     */
    public function setDataTerminoMatricula($dataTerminoMatricula)
    {
        $this->dataTerminoMatricula = $dataTerminoMatricula;
    }
    
    /**
     * Returns $turmas.
     * @see Curso::$turmas
     */
    public function getTurmas($incluirTurmaPadrao = true)
    {
    	$arrayTurmas	=	array();
    	
    	$strQuery		=	"SELECT * FROM turmas WHERE idCurso = " . $this->getIdCurso();
    	$strQuery		.=	$incluirTurmaPadrao ? "" : " AND !isnull(nome)";
			
		if (is_array($turmas	=	BancoDados::query($strQuery))){
			$arrayProfessores 		=	array();
			
			foreach($turmas as $turma){
				$strQuery	=	"SELECT turmasProfessores.idUsuario as idProfessor, turmasProfessores.exibirEmailProfessor as exibirEmail, turmasProfessores.exibirEnderecoProfessor as exibirEndereco, turmasProfessores.exibirTelefoneProfessor as exibirTelefone, usuarios.nome as nome FROM turmasProfessores, usuarios WHERE turmasProfessores.idTurma=" . $turma['idTurma'] . " AND turmasProfessores.idUsuario = usuarios.idUsuario;";

				if (is_array($professores	=	BancoDados::query($strQuery))){
					foreach ($professores as $professor) {
						$arrayProfessores[$professor['idProfessor']] =	 array('nome' => nomeSobrenome($professor['nome']), 'exibirEmail' => $professor['exibirEmail'], 'exibirEndereco' => $professor['exibirEndereco'], 'exibirTelefone' => $professor['exibirTelefone'], 'linkPerfil' => montaLink(array("usuario",$professor['idProfessor'])) );
					}
					$arrayTurmas[$turma['idTurma']] =  array('nome' => $turma['nome'], 'professores' => $arrayProfessores);
				}
				else {
					return false;
				}
			}
		}
		else {
			return false;
		}
		
        return $arrayTurmas;
    }
    
    public function getTurmasBusca($incluirTurmaPadrao, $paginaAtual = null, $resultadosPagina = null, $ordenacaoAtual = null, $ordemAtual = null) {
    	return Turma::buscar(null, null, $this->getIdCurso(), null, $incluirTurmaPadrao, $paginaAtual, $resultadosPagina, $ordenacaoAtual, $ordemAtual);
    }
    
	public function getGruposBusca($incluirGrupoPadrao, $paginaAtual = NULL, $resultadosPagina = NULL, $ordenacaoAtual = null, $ordemAtual = null) {
    	$arrayTurmas	=	array();
		foreach($this->getTurmas(true) as $chave=>$turmas) {
			array_push($arrayTurmas, $chave);
    	}
    	
    	return Grupo::buscar(null, null, $arrayTurmas, $incluirGrupoPadrao, $paginaAtual, $resultadosPagina, $ordenacaoAtual, $ordemAtual);
    }
    
	/**
     * Sets $turmas.
     * @param object $turmas
     * @see Curso::$turmas
     */
//    public function adicionaTurma($idTurma, $nome, $professores)
//    {
//    	$this->turmas[$idTurma]	=	array('nome' => $nome, 'professores' => $professores);
//    }
	
    /**
     * Returns $urlCurso.
     * @see Curso::$urlCurso
     */
    public function getUrlCurso()
    {
        return $this->urlCurso;
    }
    
    /**
     * Sets $urlCurso.
     * @param object $urlCurso
     * @see Curso::$urlCurso
     */
    public function setUrlCurso($urlCurso)
    {
        $this->urlCurso = $urlCurso;
    }
	
	public function getNumeroInscritos() {
		$strQuery	=	"SELECT COUNT(*) as numeroInscritos FROM cursosAlunos WHERE idCurso = " . $this->getIdCurso() . " AND funcaoUsuario = 'Aluno' AND autorizado = 1;";
		if (!is_array($resultado = BancoDados::query($strQuery))) {
			return -1;
		}
		return $resultado[0]['numeroInscritos'];
	}
    
    /**
     * Returns $vagas.
     * @see Curso::$vagas
     */
    public function getVagas()
    {
        return $this->vagas;
    }
    
    /**
     * Sets $vagas.
     * @param object $vagas
     * @see Curso::$vagas
     */
    public function setVagas($vagas)
    {
        $this->vagas = $vagas;
    }

}

?>